Python连接MySQL执行INSERT INTO语句无法插入数据问题求助
解决Python向MySQL插入数据不生效的问题
问题出在没有提交事务——mysql.connector默认关闭了自动提交功能,执行INSERT操作后必须手动提交,否则数据只会停留在事务中,不会真正写入数据库。而MySQL命令行客户端默认开启了自动提交,所以直接执行语句能生效。
修改后的代码如下:
import mysql.connector def sql_run_command(sql, val, db): try: cursor.execute(sql, val) # 新增事务提交操作,确保数据写入数据库 db.commit() # INSERT无查询结果,返回受影响行数更直观 return cursor.rowcount except Exception as e: # 出错时回滚事务,避免脏数据残留 db.rollback() print(f'Error on SQL command | {sql} | {e}') return None # 数据库连接 db = mysql.connector.connect( host="localhost", user="root", password="1234", database="sha" ) # 创建游标 cursor = db.cursor() # 插入语句与参数 sql = "INSERT INTO sha_data (string, sha256) VALUES (%s, %s)" val = ("1", "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b") # 传入db对象用于事务操作 print(sql_run_command(sql, val, db)) # 关闭连接 db.close()
如果不想修改原有函数结构,也可以在调用函数后直接手动提交事务,效果相同:
print(sql_run_command(sql, val)) # 直接在外部提交事务 db.commit()
内容的提问来源于stack exchange,提问作者LiiVion
相关产品推荐
相关产品推荐

