我在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