如何从 Python 3 将值插入 Mysql table 中的 DATE 列
How to insert value into DATE column in Mysql table from Python 3
我想从 python 代码更新 mysql table 中名为 file_date 的 DATE 类型列。我有一个像这样的字符串日期 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)
指出哪里出错了。提前致谢。
一种选择是在您想要的日期形成一个 Python 日期时间,然后将其绑定到准备好的语句中的 %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 担心转换。
你不应该像这样插入日期值,首先将值存储到 python 日期时间变量,然后将其更改为所需的格式并推送它
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))
我想从 python 代码更新 mysql table 中名为 file_date 的 DATE 类型列。我有一个像这样的字符串日期 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)
指出哪里出错了。提前致谢。
一种选择是在您想要的日期形成一个 Python 日期时间,然后将其绑定到准备好的语句中的 %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 担心转换。
你不应该像这样插入日期值,首先将值存储到 python 日期时间变量,然后将其更改为所需的格式并推送它
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))