chi*_*dan 5 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('/')
Run Code Online (Sandbox Code Playgroud)
这导致打印n为1,但在mysql中客户端数据不可见.
谷歌说我必须添加conn.autocommit(True).
但我不知道为什么MySQLdb将其关闭;
我不知道是否有特定的理由使用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('/')
Run Code Online (Sandbox Code Playgroud)
请注意,您可能应该检查插入是否成功,如果没有,则回滚提交.
默认情况下,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()
Run Code Online (Sandbox Code Playgroud)