我在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 """
它工作正常。
答案 0 :(得分:9)
您不能将参数用于表名或列名。
或者,您可以将其分为两个步骤,例如:
sql = """ drop table %s """ % a_table_name
self.conn.execute( sql )
如果你这样做,你可能想要明确指定哪些表可以删除......
TABLES_THAT_CAN_BE_DROPPED = ('table_a','table_b',)
if a_table_name in TABLES_THAT_CAN_BE_DROPPED:
sql = """ drop table %s """ % a_table_name
self.conn.execute( sql )
else:
pass # handle creatively
答案 1 :(得分:0)
要插入更多变量,下面是一个示例
cursor.execute("INSERT INTO {0}(var_name)VALUES({1});".format('table_name','"var_value"'))
# Note the double quotes of var_value, which is necessary