关于MySQLdb conn.autocommit(True)

时间:2012-08-21 16:42:20

标签: python mysql-python

我安装了python 2.7 64bit,MySQL-python-1.2.3.win-amd64-py2.7.exe。

我使用以下代码插入数据:

class postcon:
    def POST(self):
        conn=MySQLdb.connect(host="localhost",user="root",passwd="mysql",db="dang",charset="utf8")  
        cursor = conn.cursor()
        n = cursor.execute("insert into d_message (mid,title,content,image) values(2,'xx','ccc','fff')")
        cursor.close()
        conn.close()
        if n:
            raise web.seeother('/')

这导致将n打印为1,但在mysql中客户端数据不可见。

谷歌说我必须添加conn.autocommit(True)

但我不知道为什么MySQLdb会将其关闭;

3 个答案:

答案 0 :(得分:6)

我不知道是否有特定的理由使用GAE自动提交(假设您正在使用它)。否则,您只需手动提交即可。

class postcon:
    def POST(self):
        conn=MySQLdb.connect(host="localhost",user="root",passwd="mysql",db="dang",charset="utf8")  
        cursor = conn.cursor()
        n = cursor.execute("insert into d_message (mid,title,content,image) values(2,'xx','ccc','fff')")
        conn.commit() # This right here
        cursor.close()
        conn.close()
        if n:
            raise web.seeother('/')

请注意,您可能应该检查插件是否成功,如果没有,则回滚提交。

答案 1 :(得分:3)

默认情况下,MySQLdb autocommit为false,

您可以在MySQLdb连接中将autocommit设置为True,如下所示,

conn=MySQLdb.connect(host="localhost",user="root",passwd="mysql",db="dang",charset="utf8")
conn.get_autocommit()        #will return **False**
conn.autocommit(True)
conn.get_autocommit()        #Should return **True** now
cursor = conn.cursor()

答案 2 :(得分:0)

Connector/Python Connection Arguments

连接数据库时可以直接开启自动提交:

import mysql.connector as db
conn = db.connect(host="localhost", user="root", passwd="pass", db="dbname", autocommit=True)

import mysql.connector
db = mysql.connector.connect(option_files='my.conf', autocommit=True)

或者在调用 conn.commit() 之前先调用 close