我在 sqlite3 中遇到参数问题。问题来了又去,所以一定有我遗漏的东西。我尝试将我的代码简化为最基本的形式,但仍然不明白我做错了什么。我可以使用字符串替换形式让这段代码工作,sql = 'SELECT {} FROM {}'.format(col, tbl)
但我知道这不安全。
这是一个示例代码:
def check_exists(self, col, tbl):
self.cursor.execute("SELECT ? from ?" , (col, tbl))
if self.cursor.fetchall():
return True
return False
我这样运行:
check_exists('type', 'tbl_types')
这引发了这样的异常:
self.cursor.execute("SELECT ? from ?" , (col, tbl))
OperationalError: near "?": syntax error
我的代码可以使用显式参数正常工作:
def check_exists(self):
self.cursor.execute('SELECT * from tbl_types')
if self.cursor.fetchall():
return True
return False
>>> t.check_exists()
True