mysql 如何在yaml中为自己分配变量的python准备字符串变量

k5hmc34c  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(151)

我需要在Python 2.7中构建一个Python脚本,对一个特定的数据库进行选择查询。由于某些原因,这个脚本必须是可重用的,但是查询必须是灵活的。
我想将查询添加到脚本加载的YAML文件中,但不知道如何让YAML知道查询的一部分将由脚本本身填充:

query : "SELECT u.username, u.email from users u 
             WHERE u.status='active' 
             AND id=" + id + " 
             AND u.username='" + username + ";'

虽然我的Python脚本使用了一个包含给定信息的循环:

for row in file:
    id = row.id
    username = row.username
    dbcur.execute(QUERY['query'])

我如何以最好的方式做到这一点?我有一个在脚本内部使用查询的工作环境,但是因为我们多次需要这个脚本,并且必须记录使用情况,所以我想将查询存储在其他地方。

ql3eal8s

ql3eal8s1#

使用SQL预准备语句:

query: |
  SELECT u.username, u.email from users u 
      WHERE u.status='active' 
      AND id=%s
      AND u.username=%s;

然后可通过以下方式使用

dbcur.execute(QUERY['query'], (id, username))

dbcur必须是通过connection.cursor(prepared=True)创建的。如果您使用SQLAlchemy,请参阅他们的文档,其中使用了稍微不同的格式。

相关问题