67

我在 Eclipse 中从 PyDev 运行它...

import pymysql
conn = pymysql.connect(host='localhost', port=3306, user='userid', passwd='password', db='fan')
cur = conn.cursor()
print "writing to db"
cur.execute("INSERT INTO cbs_transactions(leagueID) VALUES ('test val')")
print "wrote to db"

结果是,在控制台顶部显示 C:...test.py,在控制台中:

写入数据库 写入数据库

所以它直到执行命令之后才会终止。但是当我查看 MySQL 中的表时,它是空的。没有插入记录。

首先,为什么不写记录。其次,如何查看日志或错误以了解发生了什么。如果代码失败,通常应该有某种红色错误。

4

3 回答 3

131

你犯了吗?conn.commit()

于 2013-12-10T03:17:55.757 回答
119

PyMySQLautocommit默认禁用,您可以autocommit=True添加connect()

conn = pymysql.connect(
    host='localhost',
    user='user',
    passwd='passwd',
    db='db',
    autocommit=True
)

conn.commit()插入后调用

于 2014-03-27T07:28:11.303 回答
4

你可以做

  • conn.commit()打电话之前close

或者

  • conn.autocommit(True)在创建连接对象后立即启用自动提交。

各种人都建议了这两种方法,这里可以找到一个重复的问题:Database does not update automatically with MySQL and Python

于 2018-02-07T09:09:27.853 回答