mysql - 通过 %s 传递表名时无法创建表的副本
问题描述
我想为我的计算创建具有参数化名称的表的临时副本,但不知何故我无法使用 %s 方式创建表。
这个问题非常混乱。我有数十个使用相同格式的 select\insert\update 查询,但它似乎不适用于CREATE TABLE
或CREATE 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 查询一样。还尝试再次关闭和打开连接,但事实并非如此,同样的错误。