python小小白哟 发表于 2023-6-26 17:14:09

python中连接mysql数据库添加数据问题

代码如下:
import pymysql

id = '20120001'
user = 'Bob'
age = 20

db = pymysql.connect(host='xxxxxxxxx',user='xxxxxxxxx',password='xxxxxxxxx',port=3306,db='x')
cursor = db.cursor()
sql = 'INSERT INTO students(id, name, age) values(%ss, %ss, %ss)'
try:
    cursor.execute(sql, (id, user, age))
    db.commit()
except:
    db.rollback()
db.close()

没有报任何错误,但是 INSERT INTO 这条语句没有没有报错,就是数据没有添加到表 students 中,是什么问题呢?求大佬们帮助小弟一下。

sfqxx 发表于 2023-6-26 17:19:32


1. SQL语句中的占位符问题:你在SQL语句中使用了%s作为占位符,但是正常应该使用%s。请将SQL语句修改为:`INSERT INTO students(id, name, age) VALUES (%s, %s, %s)`。

2. 参数传递问题:在execute()函数的参数中,你使用了两个%%s来代表占位符,但实际上应该只使用一个%s。

请尝试将以上两个问题修复后再次运行程序,看是否能正确将数据插入到数据库表中。如仍然无法解决问题,建议你查看数据库日志或者使用其他调试方式来定位问题所在。

isdkz 发表于 2023-6-26 18:08:32

你的Python代码看起来很正常,没有明显的错误。你的INSERT语句应该可以将数据添加到MySQL数据库。然而,你的代码中的 %ss 这部分可能是问题所在。

在pymysql的execute函数中,使用%s作为参数的占位符,不需要多一个"s"。所以你的INSERT语句应该如下所示:

sql = 'INSERT INTO students(id, name, age) values(%s, %s, %s)'


另外,如果数据未成功添加到students表中,可能是由于以下原因:

1. 可能是因为id字段在students表中是唯一的,你试图插入的ID可能已经存在。
2. 可能是因为students表中字段的顺序与你插入的顺序不匹配。
3. 如果数据库有其他的约束(如外键约束),可能会阻止插入操作。

一种好的实践是在你的"except"块中打印错误信息,这样就可以更清楚地知道问题出在哪里。例如:

try:
    cursor.execute(sql, (id, user, age))
    db.commit()
except Exception as e:
    print(f"An error occurred: {e}")
    db.rollback()


这样,如果有错误发生,你将能看到具体的错误信息,这将帮助你诊断问题。
页: [1]
查看完整版本: python中连接mysql数据库添加数据问题