我想在代码下面运行,但是我遇到了语法错误。
cur.execute("USE Test") # select the database
cur.execute("SHOW TABLES")
for (table_name,) in cur:
print(table_name)
trunc_table="truncate table %s"
cur.execute(trunc_table, table_name)
con.commit()
答案 0 :(得分:0)
Prepared语句参数只能在SQL允许表达式的地方使用。表名不是表达式,它们必须是查询中的文字。您可以使用字符串格式替换为字符串。
trunc_table = "truncate table %s" % table_name
cur.execute(trunc_table)
此外,我认为您需要使用不同的光标来执行第二个查询,同时循环查看第一个查询的结果。所以在循环之前,请执行:
cur2 = connection.cursor()
cur2.execute("USE Test")
然后使用
cur2.execute(trunc_table)
在循环中。另一种选择是使用cur.fetchall()
先获取所有行,然后重复使用光标。
for (table_name,) in cur.fetchall():