Python-Mysql 插入查询

Python-Mysql insert query

我正在尝试使用 python 代码将值插入 MYSQL 数据库,但努力修复错误,尽管错误代码听起来很熟悉。

我的查询如下

query="插入 Case_history (Patient_id , Patient_name , 性别 , Dob , 地址 , Phone_no , 职业 , Date_entered)值(%d、%s、%s、%s、%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, %s, %s)' 附近使用的正确语法

Patient_id 是一个符合 table 定义的整数。另外 table 有一个设置为自动增量的行号列,所以我从查询中排除了行号。

我从 here and here 开始关注 post,但无法找到根本原因。我的理解是,我可以使用 None 关键字将 Null 值从 Python 发送到 MYSQL,但它不工作。如果我按如下方式修改查询,那么它可以工作,但这不会将 NULL 插入 table.

query= "insert into Case_history (Patient_id , Patient_name , Gender , Dob , Address , Phone_no ,职业 , Date_entered) 值 (3, 'myname', 'Male', '2000-12-11', '', '123', '', '2020-11-12 19:49:21'))

cur.execute(查询)

我正在使用 Python 3.7。任何帮助将不胜感激!

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

query = """INSERT INTO Case_history (Patient_id, Patient_name, Gender, Dob, Address,
                                     Phone_no, Occupation, Date_entered)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"""
vals = (3, 'myname', 'Male', '2000-12-11', None, '123', '', '2020-11-12 19:49:21')
cur.execute(query, vals)

我成功插入了没有 %S 选项的记录。

**插入 table_name 值(元组值的字符串)**

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