Python sqlite3参数化drop table

时间:2011-04-09 20:35:41

标签: python sqlite parameterized-query sql-drop

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

它工作正常。

2 个答案:

答案 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