当我调用 execute 时,Python 准备好的语句冻结(python 2.7)



我很想知道为什么在Windows 10上。此语句完全冻结了 python 控制台:

sql = """ select distinct u.handle, u.speed from gtp_user u where u.handle=? """
cursor.execute(sql, 'test')

另一方面,以下内容工作正常:

sql = """ select distinct u.handle, u.speed from gtp_user u where u.handle='test' """
cursor.execute(sql)

当我运行示例代码的修改时,我得到以下内容

>>> db.execute('SELECT * FROM FOO WHERE id = ?', 'test')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied.

api 文档显示,这必须是可迭代对象或字典:

>>> db.execute('SELECT * FROM FOO WHERE id = ?', ('test',))
<sqlite3.Cursor object at 0x1264110>
>>> db.execute('SELECT * FROM FOO WHERE id = :id', {'id': 'test'})
<sqlite3.Cursor object at 0x12b6c70>

最新更新