Я хочу создавать временные копии таблиц с параметризованными именами для своих вычислений, но почему-то не могу создавать таблицы, используя способ% 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. Также попытался закрыть и снова открыть соединение, но это не тот случай, те же ошибки.