为什么我的 MySQLdb 不工作?(Python)

为什么我的 MySQLdb 不工作?(Python)

我想从 python 执行数据库查询:

import MySQLdb

mydb = MySQLdb.connect(host='127.0.0.1', user='root', passwd='', db='macadd', port=3306)
c = mydb.cursor()
c.execute("""INSERT INTO macadd.scanned (mac, first_time_seen, last_time_seen) VALUES (%s, %s, %s)""", ("0A:1B:2C:3D:4E:5F", "2015-09-20 19:00:18", "2015-09-20 19:03:57"))

mydb.close()
print "Done"

这是我向数据库输入值的查询。执行时,它显示已完成,没有任何错误。但是,当我查看数据时,什么都没有出现。我的表是空的。

但是当你使用该_mysql模块时:

import _mysql

mydb = _mysql.connect(host='127.0.0.1', user='root', passwd='', db='macadd', port=3306)
mydb.query("INSERT INTO macadd.scanned (mac, first_time_seen, last_time_seen) VALUES ('0A:1B:2C:3D:4E:5F', '2015-09-09 00:00:00', '2015-09-02 00:00:00')")
print "done"

它也说完成了,没有错,当我查看数据时,有一条记录已被导入。

实际上我想使用 MySQLdb 模块而不是 _mysql 模块来执行此代码:

("""INSERT INTO macadd.scanned (mac, first_time_seen, last_time_seen) VALUES (%s, %s, %s)""", ("0A:1B:2C:3D:4E:5F", "2015-09-20 19:00:18", "2015-09-20 19:03:57"))

但是,我不知道为什么它不起作用。有谁知道如何让它工作以便我可以使用 MySQLdb 模块吗?

答案1

Mysql DB 支持事务。根据 PEP-249:

“如果数据库支持自动提交功能,则必须首先关闭此功能”和“关闭连接而不先提交更改将导致执行隐式回滚”。

你可以

调用mydb.commit()以将您的更改提交到数据库

或者

(涅芬特)使用设置自动提交mydb.autocommit(True)

相关内容