我有这样的功能:
def func(self, id):
self.cursor.execute("SELECT * FROM my_table WHERE id=?", (id,))
当我在 id 中传递一个整数值时,这有效:
obj.func(id=55)
现在我可能想像这样重用这个函数:
obj.func(id="associated_id")
其中 associated_id 实际上是 my_table 中的第二列。但是,这不起作用(即使有一行 id==associated_id 也找不到结果)。
如果我像这样更改功能,它会起作用:
def func(self, id):
self.cursor.execute("SELECT * FROM my_table WHERE id=%s" % str(id))
为什么第一个版本不起作用?有没有办法使用 sqlite3.execute 参数而不是原生 python 字符串格式来解决这个问题?