You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python执行SQL命令无报错但数据库无变更问题求助

Python执行INSERT...SELECT无报错但数据库无数据的解决方法
  • 提交事务
    mysql.connector默认关闭自动提交机制,执行完SQL语句后必须手动提交事务,数据才会写入数据库。修改代码,在execute后添加提交操作:
import mysql.connector 
mydb = mysql.connector.connect(host='localhost', 
                        database='glabo', 
                        user='root', 
                        password='.........') 
mycursor = mydb.cursor()
mycursor.execute("INSERT INTO orders (o_userid, o_labo, o_jour, o_heure) SELECT users.user_id, labos.l_id, jours.j_id, heures.h_id FROM users, labos, jours, heures WHERE users.user_name = 'Kbayad' AND labos.l_nom = 'LABO 1' AND jours.j_jour = 'Mardi' AND heures.h_heure = '10-12';")
# 新增事务提交
mydb.commit()
  • 验证SELECT语句是否返回数据
    如果提交后仍无数据,说明你的SELECT查询未匹配到任何记录。可以直接在数据库客户端(如MySQL Workbench)单独运行这条SELECT语句,确认是否有结果返回;也可以在代码中先执行查询并查看结果:
mycursor.execute("SELECT users.user_id, labos.l_id, jours.j_id, heures.h_id FROM users, labos, jours, heures WHERE users.user_name = 'Kbayad' AND labos.l_nom = 'LABO 1' AND jours.j_jour = 'Mardi' AND heures.h_heure = '10-12';")
results = mycursor.fetchall()
print(results)  # 输出为空则说明WHERE条件不匹配

重点检查WHERE子句中的条件是否准确:比如字符串的大小写、空格、特殊字符是否和数据库中的数据完全一致(例如'Mardi'拼写是否正确,'LABO 1'的空格是否存在)。

  • 其他排查方向
    • 确认root用户拥有orders表的INSERT权限(虽然权限不足通常会抛出错误,但仍可排查)。
    • 检查orders表的字段类型与SELECT返回的字段类型是否兼容,比如o_userid和user_id的类型是否一致,类型不兼容可能导致静默失败。

内容的提问来源于stack exchange,提问作者Med Op

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:32:38