首页 > 解决方案 > 将sql存储在配置文件中

问题描述

我在 python 中使用了一个大的嵌套 sql 查询,需要使用不同的日期运行该查询(日期是查询中使用的字段名称)。
我还需要更改表名(假设有各种表需要更新日期或插入新记录)。

现在我发现它有点笨拙,想将查询转移到配置(或 .ini)文件。我也想这样做,以便用户无需打开代码即可轻松更改查询。

我能够读取 sql 但 python 无法更改代码中的变量。

例如在 .ini 文件中,sql 存储为 [SQL]:

p_insert_query = insert into + tbl_p + <...nested sql>

我在 python 中读到了这个,并且在 python 中已经将 tbl_p 定义为“My_tbl”,但是查询字符串没有更新表名。

还有其他方法吗?

标签: pythonsqlpostgresql

解决方案


您可以存储包含“参数化查询”的 .sql 或 .txt 文件。

如果您使用 psycopg 库,您可以这样做(如文档中所述: http: //initd.org/psycopg/docs/sql.html):

from psycopg2 import sql

my_query_text = "insert into {} values (%s, %s)" # just load that str from .sql or .txt file instead
tbl_p = "my_table_name"

cur.execute(sql.SQL(my_query_text).format(sql.Identifier(tbl_p)), [10, 20]) # [10,20] are sample values

推荐阅读