About MySQLdb conn.autocommit (True)

I 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 the client data is not visible.

google says i have to add conn.autocommit(True) .

but I don’t know why MySQLdb disables it,

+4
source share
2 answers

I don't know if there is any specific reason to use autocommit with GAE (if you use it). Otherwise, you can simply execute the command manually.

 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 to see if the insert is inserted successfully, and if not, the commit rollback.

+6
source

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",charset="utf8") conn.get_autocommit() #will return **False** conn.autocommit(True) conn.get_autocommit() #Should return **True** now cursor = conn.cursor() 
0
source

All Articles