Невозможно создать копию таблицы при передаче ее имени через% s - PullRequest
0 голосов
/ 29 мая 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...