Python/pg8000 WHERE IN 语句

Tsa*_*chi 4 python where-in python-db-api pg8000

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

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

/sf/answers/1968236091/中的响应适用于 psycopg2,但不适用于 pg8000。

谢谢!

ber*_*nie 5

  1. 生成适当数量的占位符。在 pg8000 中,占位符默认为%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,))
Run Code Online (Sandbox Code Playgroud)