Python Mysql插入查询

Python Mysql插入查询,python,null,sql-insert,mysql-python,mysql-error-1064,Python,Null,Sql Insert,Mysql Python,Mysql Error 1064,我试图使用python代码向MYSQL数据库中插入值,但很难修复错误,尽管错误代码听起来很熟悉 我的问题如下 query=“插入病例历史记录(患者id、患者姓名、性别、出生日期、地址、电话号码、职业、输入日期)值(%d、%s、%s、%s、%s) cur.execute(查询,(3,'myname','Male','2000-12-11','None','123','2020-11-12 19:49:21')) 编程错误:1064(42000):您的SQL语法有错误;请查看与MySQL服务器版本对

我试图使用python代码向MYSQL数据库中插入值,但很难修复错误,尽管错误代码听起来很熟悉

我的问题如下

query=“插入病例历史记录(患者id、患者姓名、性别、出生日期、地址、电话号码、职业、输入日期)值(%d、%s、%s、%s、%s)

cur.execute(查询,(3,'myname','Male','2000-12-11','None','123','2020-11-12 19:49:21'))

编程错误:1064(42000):您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行“%d,%s,%s,%s,%s,%s)”附近使用的正确语法

根据表格定义,患者id是一个整数。此外,该表还有一个设置为autoincrement的行号列,因此我从查询中排除了行号

我从和跟帖,但找不到根本原因。我的理解是,我可以使用None关键字将空值从Python发送到MYSQL,但它不起作用。如果我按照下面的方式修改查询,那么它会工作,但不会将NULL插入表中

query=“插入病例历史记录(患者id、患者姓名、性别、出生日期、地址、电话号码、职业、输入日期)值(3,‘我的姓名’、‘男性’、‘2000-12-11’、‘123’、‘2020-11-12 19:49:21’)

当前执行(查询)


我正在使用Python 3.7。非常感谢您的帮助!

您应该使用
%s
作为Python脚本/MySQL表中所有数据类型的占位符,而不仅仅是字符串文字:

query=“”插入病历(患者id、患者姓名、性别、出生日期、地址、,
电话号码、职业、输入日期)
值(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)”
VAL=(3,‘我的名字’、‘男性’、‘2000-12-11’、‘无’、‘123’、‘2020-11-12 19:49:21’)
当前执行(查询、VAL)

我在没有%S选项的情况下插入了记录

**插入表\u名称值(元组值字符串)**


还将表中列的数据类型更改为varchar。

Tim,我也尝试过,但在查询的同一位置仍然失败。我没有找到解决方法,因此我决定在表中指定一个空格,而不是NULL。如果表增长,现在和将来都会占用一些空间。