python - 使用 pymysql 在 MySql 中插入空日期

标签 python mysql date null

我正在尝试使用 pymysql 和参数将日期插入 MySql 数据库。有些行具有日期字段,但对于其他一些行,缺少特定的日期字段。空行给出类型为“pymysql.err.InternalError:(1292,“错误的日期值:”)的错误。下面是重现该错误的一段代码:

import pymysql
db=pymysql.connect("localhost","testuser","test1234","TESTDB")
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
data = cursor.fetchone()
print ("Database version : %s " % data)

query = "DROP TABLE IF EXISTS birthdays"
cursor.execute(query)

query="CREATE TABLE birthdays(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,\
name VARCHAR(20),\
birthday DATE NULL DEFAULT NULL)"
cursor.execute(query)
db.commit()

birthdays={'David':'2014-05-22','Larry':'014-05-22', 'Barry':''}

for k,v in birthdays.items():
    print(k,v)
    query="INSERT INTO birthdays (name,birthday) VALUES ('%s','%s')"%(k,v)
    cursor.execute(query)
    db.commit()

db.close()

问题出在巴里和它的空日期上。我尝试将巴里的日期设置为“无”,但它不起作用。如果我将其设置为“NULL”并从日期参数中删除引号(('%s',%s) 而不是 ('%s','%s')),它适用于 Barry,但请注意其他人.

提前非常感谢您,

加布里埃尔·维达尔

最佳答案

您可以使用我刚刚在数组中更改的以下代码并设置'Barry':None,因为当使用mysqldb和cursor.execute()时,传递值None:

birthdays={'David':'2014-05-22','Larry':'014-05-22', 'Barry':None}

for k,v in birthdays.items():
    print(k,v)
    query="INSERT INTO birthdays (name,birthday) VALUES ('%s','%s')"%(k,v)
    cursor.execute(query)
    db.commit()

db.close()

了解更多详情here

关于python - 使用 pymysql 在 MySql 中插入空日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52328776/

相关文章:

python - 如何在列表列表中查找多米诺骨牌的索引

c# - 如何使用 C# 中的 select 调用 MySQL 存储过程

mysql left join to table with multiple rows on min id 以确保返回单行

objective-c - NSPredicateEditorRowTemplate 用于日期比较

javascript - 无法使用javascript以自动格式删除

mysql - 在 MYSQL 中将 YYYY-mm-dd 转换为 yyyymmdd

python - PyPlot 中 x 轴和图形之间的颜色

python - 如何根据数据框的长度作为索引值在数据框中创建额外的列

python - SQLAlchemy Migrate - 我可以将列添加(或修改)到现有表的特定位置吗?

php - MySQL应用程序性能问题