Python - MYSQL Dynami c запрос: вставка значений в синтаксис таблицы - PullRequest
0 голосов
/ 11 июля 2020

Я использую Python и mysql (импорт mysql коннектор).

Я пытался вставить несколько значений в столбец Dynami c, который я создал ранее. Однако что-то не так с синтаксисом моего запроса, и я не могу его правильно написать.

Что работает (не Dynami c в качестве примера): -> В столбце ynoqxzvb, value ' 1 c '.

                  conn.cursor()
                  select4 = """ INSERT INTO oldcards (ynoqxzvb) VALUES ('1c'); """
                  cursor.execute(select4)
                  conn.commit()

То, что я хочу сделать, это (Dynami c):

                  select5 = """ INSERT INTO oldcards (%s) VALUES (%s); """
                  tple = (str(RouteID),str(mydict[ID1]["Card1"]))
                  cursor.execute(select5,tple)
                  conn.commit()

Итак, в основном я хочу иметь имя столбца и вставленный value Dynami c с использованием локальных переменных RouteID и str (mydict [ID1] [«Card1»]) ».

Код ошибки:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''ynoqxzvb') VALUES ('Card2=4b')' at line 1

Кто-нибудь знаете правильный синтаксис? Заранее спасибо!

1 Ответ

0 голосов
/ 11 июля 2020

Ваш запрос неверен, потому что имена столбцов не соответствуют значениям, которые вы пытаетесь вставить. Предположим, что str(RouteID) равно 1, а str(mydict[ID1]["Card1"] равно 2. Затем cursor.execute(select5,tple) преобразует ваш запрос в

INSERT INTO oldcards (1) VALUES (2)

Фактически вы хотите:

INSERT INTO oldcards (column1, column2) VALUES (1,2)

Где column1 и column2 - это имена столбцов, в которые вы хотите вставить. Итак, правильный способ:

 select5 = """ INSERT INTO oldcards (column1, column2) VALUES (%s, %s); """
 tple = (str(RouteID),str(mydict[ID1]["Card1"]))
 cursor.execute(select5,tple)
 conn.commit()
...