首页 > 解决方案 > 通过 %s 传递表名时无法创建表的副本

问题描述

我想为我的计算创建具有参数化名称的表的临时副本,但不知何故我无法使用 %s 方式创建表。

这个问题非常混乱。我有数十个使用相同格式的 select\insert\update 查询,但它似乎不适用于CREATE TABLECREATE TABLE ... LIKE ...

我的代码:

query_order = "SELECT Order_ID FROM Reels_In_Order WHERE Reel_Manufacturer_ID = %s"

query_create_copy_order_table = 'CREATE TABLE IF NOT EXISTS %s'

con = mdb.connect(user=self.user, password=self.pswd, database=self.db)

cur = con.cursor()

cur.execute(query_order, (GUI_entry_string,))
order_id = cur.fetchall()

copy_table_name = "Copy_Order_"+order_id[0][0]
print(copy_table_name)

query_copy_order_to_enter = (copy_table_name,)

cur.execute(query_create_copy_order_table, query_copy_order_to_enter)

它抛出一个错误

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''Copy_Order_2'' at line 1

或者这个,使用CREATE LIKE方法

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''Copy_Order_2' LIKE Reels_In_Order' at line 1

我没主意了。尝试"Copy_Order_"+order_id[0][0]用普通的方式改变这个丑陋的东西"Copy_Order_2"并得到同样的错误。元组正在正确创建并传递到查询中,就像我的其他 select\update 查询一样。还尝试再次关闭和打开连接,但事实并非如此,同样的错误。

标签: mysqlsql

解决方案


推荐阅读