好的.我在这里构建了一个mysql查询浏览器,比如navicat.使用MySQLdb执行查询.
这是奇怪的部分.当我通过程序运行查询(使用MySQLdb)时,它给了我成功,受影响的行= 1,但是当我在phpmyadmin中查看它时,值没有改变.
所以在我执行查询之前,我将其打印出来,复制并粘贴到phpmyadmin的查询窗口中,点击go即可.长话短说,更新查询不起作用,但当我复制并粘贴到phpmyadmin时,它的工作原理.
self.tbl.sql.use(self.tbl.database) # switches to correct database. I've printed this and it uses the corrected db
if self.tbl.sql.execute(query) == True:
print sql_obj.rows_affected() # returns 1 (since i only do 1 query)
Run Code Online (Sandbox Code Playgroud)
这是SQL类的一部分
def execute(self, query):
try:
self.cursor.execute(query)
return True
except MySQLdb.ProgrammingError as error:
print "---->SQL Error: %s" % error
return False
except MySQLdb.IntegrityError as e:
print "--->SQL Error: %s" % e
return False
Run Code Online (Sandbox Code Playgroud)
那么任何想法可能会发生什么?
cod*_*ape 19
我相信@Jason Creighton和@ S.Lott是正确的.
至少,如果您要更新的表位于事务存储引擎上.InnoDB是交易的,ISAM不是.
您必须commit()在关闭之前调用连接对象,或者必须将连接设置为自动提交模式.我不确定你是如何为MySQLdb连接做的那样,我想你要么为连接构造函数设置一个参数,要么在创建连接对象后设置一个属性.
就像是:
conn = mysql.connection(host, port, autocommit=True)
# or
conn = mysql.connection(host, port)
conn.autocommit(True)
Run Code Online (Sandbox Code Playgroud)
Jas*_*ton 16
只是一个猜测:也许Python中的代码在事务中运行,并且事务可能需要显式提交?
编辑:MySQLdb FAQ中有一个可能相关的条目.
| 归档时间: |
|
| 查看次数: |
15198 次 |
| 最近记录: |