About MySQLdb conn.autocommit(True)

匿名 (未验证) 提交于 2019-12-03 00:56:02

问题:

I have installed python 2.7 64bit,MySQL-python-1.2.3.win-amd64-py2.7.exe.

I use the following code to insert data :

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('/') 

This results in printing n as 1, but in mysql client data aren't visible.

google says I must add conn.autocommit(True).

but I don't know why MySQLdb turns it off;

回答1:

I don't know if there's a specific reason to use autocommit with GAE (assuming you are using it). Otherwise, you can just manually commit.

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('/') 

Note that you probably should check if the insert happened successfully, and if not, rollback the commit.



回答2:

by default MySQLdb autocommit is false,

You can set autocommit to True in your MySQLdb connection like this,

conn=MySQLdb.connect(host="localhost",user="root",passwd="mysql",db="dang",charse="utf8") conn.autocommit = True cursor = conn.cursor() 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!