鱼C论坛

 找回密码
 立即注册
查看: 1829|回复: 2

[已解决]python中连接mysql数据库添加数据问题

[复制链接]
发表于 2023-6-26 17:14:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下:
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 中,是什么问题呢?求大佬们帮助小弟一下。
最佳答案
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。

请尝试将以上两个问题修复后再次运行程序,看是否能正确将数据插入到数据库表中。如仍然无法解决问题,建议你查看数据库日志或者使用其他调试方式来定位问题所在。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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。

请尝试将以上两个问题修复后再次运行程序,看是否能正确将数据插入到数据库表中。如仍然无法解决问题,建议你查看数据库日志或者使用其他调试方式来定位问题所在。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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()

这样,如果有错误发生,你将能看到具体的错误信息,这将帮助你诊断问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 21:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表