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 中,是什么问题呢?求大佬们帮助小弟一下。
1. SQL语句中的占位符问题:你在SQL语句中使用了%s作为占位符,但是正常应该使用%s。请将SQL语句修改为:`INSERT INTO students(id, name, age) VALUES (%s, %s, %s)`。
2. 参数传递问题:在execute()函数的参数中,你使用了两个%%s来代表占位符,但实际上应该只使用一个%s。
请尝试将以上两个问题修复后再次运行程序,看是否能正确将数据插入到数据库表中。如仍然无法解决问题,建议你查看数据库日志或者使用其他调试方式来定位问题所在。 你的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]