python - 将sql存储在配置文件中
问题描述
我在 python 中使用了一个大的嵌套 sql 查询,需要使用不同的日期运行该查询(日期是查询中使用的字段名称)。
我还需要更改表名(假设有各种表需要更新日期或插入新记录)。
现在我发现它有点笨拙,想将查询转移到配置(或 .ini)文件。我也想这样做,以便用户无需打开代码即可轻松更改查询。
我能够读取 sql 但 python 无法更改代码中的变量。
例如在 .ini 文件中,sql 存储为 [SQL]:
p_insert_query = insert into + tbl_p + <...nested sql>
我在 python 中读到了这个,并且在 python 中已经将 tbl_p 定义为“My_tbl”,但是查询字符串没有更新表名。
还有其他方法吗?
解决方案
您可以存储包含“参数化查询”的 .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
推荐阅读
- javascript - 单击图片元素时切换 img src 和 source srcset
- laravel - 在 S3 中上传时的 Laravel-mix 版本控制认为以前的哈希
- c# - 使用 C# 调用 powershell 脚本 - 将字符串数组作为参数传入 powershell
- mysql - 如何使用 MySQL python 连接器修复批量加载
- php - FCM 链接在桌面通知中不起作用
- python - 使用 for 循环的 Python 切片行为
- reactjs - 如何使用 jsconfig 文件复制 NODE_PATH env var 的效果
- python - 有 2 个独立的无限循环
- javascript - 我无法使用我的函数更改或更新变量
- android - 如何修复 build.gradle?