【问题标题】:python = storing multiple sql queriespython = 存储多个 sql 查询
【发布时间】:2016-03-14 21:00:52
【问题描述】:

我有一个 python 文件,其中包含一堆 sql 查询,具体取决于传递的参数示例如下:

if args.monitor == 'Argument One':
    sql_query = """select a, b, c from tableA where a = 123"""
elif args.monitor == 'Argument Two':
    sql_query = """select d, e, f from TableA where d = 456"""
elif ....

对于大约 10 个具有不同复杂性的不同查询继续进行。

显然,这会使代码变得一团糟,并且更新和/或添加 SQL 查询涉及到大量代码。我想做的是将查询/参数分成某种字典。是否可以为此目的使用配置文件,我可以执行以下操作?

[query]
Argument A = select a, b, c from tableA where a = 123
Argument B = select d, e, f from TableA where d = 456

然后通过 ConfigParser 调用。我担心有些查询很长(最多 10 行),那么我将如何在配置文件中表示呢?

或者我是否将每个查询保存为ArgumentA.sql,然后列出目录,如果参数匹配则使用该sql?

以前有没有人处理过这样的场景?

【问题讨论】:

  • 查询保持人类可读(即带有换行符)重要吗?
  • 目的是必须维护它们,所以是的,需要保持人类可读性。

标签: python sql sql-server pyodbc


【解决方案1】:

将每个参数与相应查询相关联的字典似乎是最好的主意。考虑到这一点,我看到了几种方法

1) 在包含此 dict 的文件顶部有一个常量。例如:

ARGUMENTS_DICT = {
    'Argument One': (
        'select *'
        'from table'
        'where etc'
    ),
    ...
}

2) 在另一个文件(Python 模块)中具有来自 1 的相同常量并将其导入当前模块。例如:

from .arguments_dict import ARGUMENTS_DICT

3) 将此字典作为 JSON 文件中的 JSON 对象,并使用 Python 的 json module 将其作为字典加载。这里的缺点是,为了保持查询的可读性,每个查询都需要拆分为列表的元素并在 Python 中加载时加入。例如:

// arguments_dict.json
{
    'Argument One': [
        'select *',
        'from table',
        'where etc'
    ],
    ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    相关资源
    最近更新 更多