MySQL Python запрос синтаксической ошибки на INSERT, когда он кажется удовлетворительным? - PullRequest
0 голосов
/ 18 сентября 2018

Я занимаюсь удалением образца базы данных для службы такси и пытаюсь заполнить таблицу PhoneCall некоторыми данными, используя Python и библиотеку mysql.connector .Столбцы таблицы PhoneCall:

  • idCall, int(11), PRIMARY KEY
  • Operator_idOperator, int(11), NOT NULL, FOREIGN KEY
  • Client_idClient, int(11), NOT NULL, FOREIGN KEY
  • datetimeValue, datetime
  • Duration, int(11)

Я объявляю пустой список и генерирую некоторые данные для заполнения таблицы:

  • query = "INSERT INTO TaxiTest.PhoneCall (idCall, Operator_idOperator, Client_idClient, datetimeValue, Duration) VALUES (%s, %s, %s, %s, %s)"

После этого, Я генерирую данные

data = []
for i in range(1500):
    idCall = i + 1
    (Operator_idOperator, Client_idClient) = (20, 21) # Sample ints
    datetime_value = datetime.now()
    duration = 60
    t_tuple = (idCall, Operator_idOperator, Client_idClient, datetime_value, duration)
    data.append(t_tuple)

Далее я пытаюсь вставить данные, используя синтаксис курсора.executemany (запрос, данные):

cnx = mysql.connector.connect(**config)
cnx.autocommit = True
cursor = cnx.cursor()
try:
    cursor.executemany(query, data)
    log = cursor.fetchall()
    print("Result: " + log)
except mysql.connector.Error as err:
    print(err.msg)

Итак, результат:

  • Data[0]: (1, 46, 2521, datetime.datetime(2018, 9, 17, 22, 44, 20, 159722), 55)
  • 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 'TaxiTest.PhoneCall' at line 1

Хотя я уже заполнил около 5 таблиц в этой базе данных, я не вижу никаких ошибок в этой INSERT Statement.

Кажется, что единственное решение - записать все 1500 записей данных в файл output.txt и выполнить это с помощью MySQL Workbench, поскольку при вставке с MySQL Workbench * 1050 ошибки нет*, но это не приветствуется.

PS Это мой первый вопрос по StackOverflow.Так долго ждали этого момента, чтобы получить «монеты» для комментирования и оценки других вопросов и ответов.

1 Ответ

0 голосов
/ 18 сентября 2018

Не пытаясь это сделать, я бы сказал, что это объект datetime.

Вы можете попробовать этот код:

from datetime import datetime
datetime_value = datetime.now()
formatted_date = datetime_value.strftime('%Y-%m-%d %H:%M:%S')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...