请建议我在sql查询中使用python变量的正确方法

时间:2018-05-10 17:54:36

标签: mysql python-2.7

我想在代码下面运行,但是我遇到了语法错误。

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()

1 个答案:

答案 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():