10

我已经安装了 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 将其关闭;

4

3 回答 3

13

默认情况下 MySQLdb 自动提交为 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()
于 2017-07-10T09:41:00.773 回答
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('/')

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

于 2012-08-21T16:45:57.297 回答
0

连接器/Python 连接参数

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

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

于 2021-01-21T19:19:39.350 回答