Как вставить значение в столбец DATE в таблице Mysql из Python 3 - PullRequest
0 голосов
/ 19 марта 2020

Я хочу обновить столбец типа DATE с именем file_date в таблице mysql из кода python. У меня есть строковая дата, подобная этой a = '2020-02-20' . Когда я пробовал разными способами, всегда получаю похожую ошибку:

 mysql.connector.errors.DatabaseError: 1411 (HY000): Incorrect datetime value: '1998' for function str_to_date

Я не знаю, откуда взялся этот 1998 год. Мой пример кода приведен ниже

import mysql.connector
a='2020-02-20'
insert_qry="insert into table_name(file_date) values(STR_TO_DATE({},'%Y-%m-%d'))".format(a)
#assume I have a db_cursor created to connect mysql server
db_cursor.execute(insert_qry)

Укажите, где это пошло не так. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 19 марта 2020

Один из вариантов - сформировать Python datetime в желаемую дату, а затем связать его с %s заполнителем в подготовленном вами утверждении:

import mysql.connector
a = datetime.datetime(2020, 2, 20)
insert_qry = "INSERT INTO table_name (file_date) VALUES (%s)"
db_cursor.execute(insert_qry, (a,))

Обратите внимание, что следующий подход также должен работать :

a = '2020-02-20'
insert_qry = "INSERT INTO table_name (file_date) VALUES (%s)"
db_cursor.execute(insert_qry, (a,))

Это также должно работать, поскольку строковый литерал '2020-02-20' также является допустимым литералом даты в MySQL. Но лучше всего использовать объект даты в Python и связать его с заполнителем, позволяя API подготовленного оператора беспокоиться о преобразованиях.

0 голосов
/ 19 марта 2020

Вы не должны вставлять значение даты, как это, сначала сохраните значение в python переменную даты и времени, а затем измените его на требуемый формат и pu sh it

from datetime import datetime
a='2020-02-20'
x= datetime.datetime.strptime(a, '%Y-%m-%d')
formatted_date = x.strftime('%Y-%m-%d %H:%M:%S')
cursor.execute('insert into table(file_date) values(%s)', (formatted_date))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...