Переменные Python в MySQL выполняют команду - PullRequest
0 голосов
/ 14 ноября 2018

Я везде искал ответ и не смог найти подходящего.

Это мой код:

conn = pymysql.Connect(host="host", user="user", passwd="password", db="database")

dbhandler = conn.cursor()
table_name = today_date.split(" ")[0]
execute_it = """CREATE TABLE %s (
        USERNAME CHAR(20) NOT NULL, 
        X CHAR(10), 
        Y INT, 
        Z INT, 
        A INT)"""

try:
    dbhandler.execute(execute_it, table_name)
except:
    print("\n----------------------------\nFailed to create table.")

Теперь я попытался сделать это так. Я попытался с разделением% в выполнить. Я пробовал с? вместо% s. Я попробовал это с большим количеством опций, но ни один из них не работал для меня, и мне не удалось создать таблицу

Это исключение, которое я получаю:

(1064, «В синтаксисе SQL есть ошибка; обратитесь к соответствует вашей версии сервера MariaDB для правильного использования синтаксиса около '' 11/14/18 '(\ n ИМЯ ПОЛЬЗОВАТЕЛЯ (20) НЕ НУЛЬ, \ n
X CHAR (10 'в строке 1 ")

Использование 5.5.52-MariaDB.

Спасибо!

EDIT:

Удалось пройти через это. Спасибо Павлу Франциреку за помощь.

1 Ответ

0 голосов
/ 14 ноября 2018

Проблема не в заполнителе, а в формате даты. Символ "/" не допускается в имени таблицы. Попробуйте что-то вроде:

table_name = today_date.split(" ")[0].replace("/","")

Я предполагаю, что все числа в вашем формате даты являются 2-значными.

...