最近,我遇到了以下奇怪的行为,可以通过以下代码样例来解释:
import sqlite3, platform
insert = (10, "today")
db = sqlite3.connect(":memory:")
db.execute("CREATE TABLE t (number, string)")
db.execute("INSERT INTO t (string, number) VALUES ($2, $1)", insert)
select = db.execute("SELECT number, string FROM t").fetchone()
print(f"python version: {platform.python_version()}")
print(f"sqlite version: {sqlite3.sqlite_version}, module: {sqlite3.version}")
print(f"insert: {insert}")
print(f"select: {select}")
python version: 3.10.5
sqlite version: 3.38.5, module: 2.6.0
insert: (10, 'today')
select: ('today', 10)
我预计SELECT将以与INSERT相同的方式出现.对于这种行为,我能想到的唯一解释是,参数参数的数值被忽略了.为什么Python会忽略排序?