Python SQLite 多个问号查询会导致错误"row value misused"



下面的示例查询导致"行值被误用";错误。我就是想不出这个问题。我的意图是提取所有记录,其中"ISIN"匹配"Test1"one_answers"Test2".

环境:Python 3.10.0 Windows 21H1

import sqlite3 as objSQLite
# Connect
objDatabase = objSQLite.connect("Sample.db")
objCursor = objDatabase.cursor()
# Create table
objCursor.execute("create table if not exists ScripData(ISIN text);")
# Add rows
objCursor.execute("insert or ignore into ScripData values(?)", ("Test1", ))
objCursor.execute("insert or ignore into ScripData values(?)", ("Test2", ))
objCursor.execute("insert or ignore into ScripData values(?)", ("Test3", ))
objCursor.execute("insert or ignore into ScripData values(?)", ("Test4", ))
objDatabase.commit()
# Query
objCursor.execute("select * from ScripData where ISIN=(?,?)", ("Test1", "Test2", ))
arrResult = objCursor.fetchall()
print(arrResult)

错误是:

Traceback (most recent call last):
File "Query.py", line 19, in <module>
objCursor.execute("select * from ScripData where ISIN=(?,?)", ("Test1", "Test2", ))
sqlite3.OperationalError: row value misused

您不能使用=来查找多个值的匹配,您需要使用IN

objCursor.execute("select * from ScripData where ISIN IN (?,?)", ("Test1", "Test2" ))
arrResult = objCursor.fetchall()

相关内容

最新更新