SQLite3 Python:executemany选择

2024-04-16 14:58:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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()

Tags: fromnoneididsexecutenotwherecon
2条回答

使用execute()执行返回数据的查询。

您要么使用循环,要么使用IN (id1, id2, id3)where子句:

cur.execute('SELECT * FROM Genre WHERE id in ({0})'.format(', '.join('?' for _ in ids)), ids)

您收到的错误消息很简单,You cannot execute SELECT statements in executemany()

只需将executemany更改为执行:

ids=[1,2]
for id in ids:
    cur.execute('SELECT * FROM Genre WHERE id=?', id)
    rows = cur.fetchall()
    print rows

相关问题 更多 >