我正在尝试使用 executemany 函数将表中的所有行排成一行,并使用一些 WHERE 约束
import sqlite3
con = sqlite3.connect('test.db')
cur = con.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS Genre (id INTEGER PRIMARY KEY, genre TEXT NOT NULL)')
values = [
(None, 'action'),
(None, 'adventure'),
(None, 'comedy'),
]
cur.executemany('INSERT INTO Genre VALUES(?, ?)', values)
ids=[1,2]
cur.executemany('SELECT * FROM Genre WHERE id=?', ids)
rows = cur.fetchall()
print rows
错误
cur.executemany('SELECT * FROM Genre WHERE id=?', ids)
sqlite3.ProgrammingError: You cannot execute SELECT statements in executemany()
最佳答案
使用 execute()
执行返回数据的查询。
您要么必须使用循环,要么使用 IN (id1, id2, id3)
where 子句:
cur.execute('SELECT * FROM Genre WHERE id in ({0})'.format(', '.join('?' for _ in ids)), ids)
上述表达式为 ids
中的每个项目插入一个单独的 ?
占位符(以逗号分隔)。
关于python - SQLite3 Python : executemany SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142554/