【问题标题】:Python/pg8000 WHERE IN statementPython/pg8000 WHERE IN 语句
【发布时间】:2016-05-13 00:43:27
【问题描述】:

在 SQL 语句中通过 %s 获得元组(名称)的正确方法是什么?

names = ('David', 'Isaac')
sql = 'SELECT * from names WHERE name IN %s'
cur.execute(sql,(names,))

https://stackoverflow.com/a/28117658/5879128 中的响应适用于 psycopg2,但不适用于 pg8000。

谢谢!

【问题讨论】:

    标签: python where-in python-db-api pg8000


    【解决方案1】:
    1. 生成适当数量的占位符。在 pg8000 the placeholder defaults to %s.
    2. 将占位符插入查询字符串。
    3. 执行 SQL 注入安全查询。

    像这样:

    sql = 'SELECT * from names WHERE name IN ({})'.format( ','.join(['%s']*len(names)) )
    # results in -> 'SELECT * from names WHERE name IN (%s,%s)'
    cur.execute(sql,(names,))
    

    【讨论】:

      猜你喜欢
      • 2015-03-22
      • 2012-12-24
      • 1970-01-01
      • 2010-12-07
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      相关资源
      最近更新 更多