我很想知道为什么在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>