使用MySQL查询的Python项目的项目结构?

时间:2014-11-18 16:36:50

标签: python mysql

我有一个Python项目,可以生成各种MySQL查询,这些查询会获取一些变量并将它们插入查询本身。例如:

number_of_rows = 50
query1 = '''select *
from some_db
limit %s''' % (number_of_rows)

但是,由于我有很多长查询,在一个操作和清理数据的脚本中,它使我的脚本可读性降低。构造程序的合理方法是什么,以便它既可读又可以进行查询调用?到目前为止,一种方法是使用另一个python文件,让我们称之为my_query_file.py,其中包含

的内容。
def my_first_query(number_of_rows):
    query1 = '''select *
    from some_db
    limit %s''' % (number_of_rows)
    return query

然后从我的主项目文件中导入my_query_file,并调用my_first_query。有没有更好的方法来做到这一点?

3 个答案:

答案 0 :(得分:1)

考虑使用现有的查询构建器,如python-sql:

https://code.google.com/p/python-sql/

或者如果您的应用程序的复杂性证明您可以尝试像SQL Alchemy那样完整的ORM:

http://www.sqlalchemy.org/

答案 1 :(得分:0)

您是否考虑过使用像Jinja2这样的模板系统?我已经用它来存储和使用模板用于各种情况(从Web开发到自动代码生成),并且它运行良好。

您可以在模板文件中进行SQL查询,然后根据需要加载填充

答案 2 :(得分:0)

我是Jarek说的第二个。使用SQL炼金术,编写硬编码的SQL查询是一个非常糟糕的主意,即使它只是一个脚本。如果您有2-3个查询,它会起作用,但除此之外,每当您需要修改结构时,您必须在每个地方修改查询。

另外你说你有很长的查询,在sql炼金术中,你几乎把所有东西当作一个对象,这使得查询不那么令人头疼。 这样,您可以将数据库结构与程序分离,并减少对它的依赖。

p.s:抱歉,不是真的答案,但我没有足够的代表发表评论。