Python sqlite3 参数化删除表
Posted
技术标签:
【中文标题】Python sqlite3 参数化删除表【英文标题】:Python sqlite3 parameterized drop table 【发布时间】:2011-04-09 20:35:40 【问题描述】:我在 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】:您不能对表名或列名使用参数。
或者,您可以将其设为两步过程,例如:
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
【讨论】:
太糟糕了,我想将executemany()
与表格列表一起使用。知道这是否可行吗?
循环遍历表名是否太慢了?
当然不是。我只是喜欢让事情尽可能简单:)。感谢您的回答!以上是关于Python sqlite3 参数化删除表的主要内容,如果未能解决你的问题,请参考以下文章