有没有办法在SQL查询中使用可变长度占位符?
现在有一个3元组,我写这样的东西:
c.execute('SELECT * FROM table WHERE word IN (?, ?, ?)', tup)
但是,如果 TUP 可以是不同的长度,也许是4元组或2元组?在这种情况下是否有使用占位符的语法?如果没有,编写代码的首选方法是什么?
有没有办法在SQL查询中使用可变长度占位符?
现在有一个3元组,我写这样的东西:
c.execute('SELECT * FROM table WHERE word IN (?, ?, ?)', tup)
但是,如果 TUP 可以是不同的长度,也许是4元组或2元组?在这种情况下是否有使用占位符的语法?如果没有,编写代码的首选方法是什么?
你必须做这样的事情(使用你的例子):
tup = ... # some sequence/tuple of unknown length
sql = 'SELECT * FROM table WHERE word IN (%s)' % ', '.join('?' for a in tup)
c.execute(sql, tup)
这样,您可以在sqlite3模块解析之前动态创建占位符列表并格式化SQL字符串。
你必须做这样的事情(使用你的例子):
tup = ... # some sequence/tuple of unknown length
sql = 'SELECT * FROM table WHERE word IN (%s)' % ', '.join('?' for a in tup)
c.execute(sql, tup)
这样,您可以在sqlite3模块解析之前动态创建占位符列表并格式化SQL字符串。