Python sqlite3 parameterized drop table

≯℡__Kan透↙ 提交于 2019-12-28 04:31:10

问题


I have a problem with dropping sqlite3 table in python. I am using standard sqlite3 module.

self.conn = sqlite3.connect(...)

sql = """ drop table ? """
self.conn.execute( sql, (u'table_name',) )

gives me OperationalError: near "?": syntax error

When I change sql to:

sql = """ drop table table_name """

it works fine.


回答1:


You cannot use parameters for table names nor column names.

Alternatively you could make it a two-step process, e.g.:

sql = """ drop table %s """ % a_table_name
self.conn.execute( sql )

And if you're doing that you may want to explicitly specify which tables can be deleted...

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


来源:https://stackoverflow.com/questions/5607737/python-sqlite3-parameterized-drop-table

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!