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.
You cannot use parameters for table names nor column names.
Alternatively you could make it a two-step process, e.g.:
a_table_name = "table_a"
sql_stmt = f"""DROP TABLE {a_table_name}"""
self.conn.execute(sql_stmt)
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:
# use code snippet from above
else:
pass # handle creatively