SQLite数据库是否支持一次性删除多张表?
SQLite一次性删除多张表的正确方法
SQLite的DROP TABLE语法不支持用逗号分隔多个表名,这就是你用DROP TABLE IF EXISTS B,C,A;或者加反引号后依然报错的原因——不管怎么加符号,逗号分隔多表的写法在SQLite里根本不被支持。
正确的做法有两种:
执行多条独立的
DROP TABLE语句,用分号分隔:DROP TABLE IF EXISTS B; DROP TABLE IF EXISTS C; DROP TABLE IF EXISTS A;在Python里可以直接把这些语句放一起执行:
cur.execute("DROP TABLE IF EXISTS meta; DROP TABLE IF EXISTS urls;")如果要删除的表很多,用循环遍历表名列表,逐个执行删除操作,更简洁:
tables = ["meta", "urls", "A", "B", "C"] for table_name in tables: cur.execute(f"DROP TABLE IF EXISTS {table_name};")
另外注意:如果你的表名包含特殊字符(比如空格、连字符),别用反引号,SQLite标准的标识符包裹方式是双引号或者方括号,比如:
DROP TABLE IF EXISTS "user info"; DROP TABLE IF EXISTS [order-details];
内容的提问来源于stack exchange,提问作者Matblanket
相关产品推荐
相关产品推荐

