Python sqlite3 参数化删除表
我在用Python删除sqlite3表的时候遇到了问题。我使用的是标准的 sqlite3
模块。
self.conn = sqlite3.connect(...)
sql = """ drop table ? """
self.conn.execute( sql, (u'table_name',) )
这段代码让我收到一个错误提示:OperationalError: near "?": syntax error
当我把 sql
改成:
sql = """ drop table table_name """
这样就没问题了。
1 个回答
12
你不能用参数来表示表名或者列名。
另外,你可以把这个过程分成两步来做,比如:
a_table_name = "table_a"
sql_stmt = f"""DROP TABLE {a_table_name}"""
self.conn.execute(sql_stmt)
如果你这样做的话,可能还需要明确指定哪些表是可以被删除的……
TABLES_THAT_CAN_BE_DROPPED = ('table_a','table_b',)
if a_table_name in TABLES_THAT_CAN_BE_DROPPED:
# use code snippet from above
else:
pass # handle creatively