![](/img/trans.png)
[英]PyMySQL UnicodeEncodeError; python shell successes but cmd fails
[英]python pymysql set autocommit false fails
我的脚本从文件读取MYSQL UPDATE查询,然后应该使用autocommit = 0立即执行它们。但是,如果我删除conn.commit()
它仍然一个接一个地运行,虽然我没有提交。 错误在哪里?
import pymysql
conn = pymysql.connect(host='x', unix_socket='/tmp/mysql.sock',user='x', passwd='x', db='x')
fileHandle = open ( 'mysqlout.txt' )
fileList = fileHandle.readlines()
fileHandle.close()
i = 1
weiter = input("Execute MYSQL file? ")
if (weiter == 'y'):
cur = conn.cursor()
cur.execute('SET autocommit = 0')
conn.commit()
for fileLine in fileList: #-----each line is an UPDATE...query
cur.execute(fileLine)
i = i + 1
print(i," ---",round(i / len(fileList),3))
#conn.commit()
conn.close()
MySQL中的MyISAM存储引擎不支持事务。 只有InnoDB支持ACID交易。
引用事务和原子操作MySQL文档 :
在事务方面,MyISAM表有效地始终以autocommit = 1模式运行。
您应该检查表的存储引擎 :
mysql> SELECT table_name,engine FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema=DATABASE();
+--------------+--------+
| table_name | engine |
+--------------+--------+
| stats | MyISAM |
+--------------+--------+
1 row in set (0.00 sec)
将表移动到支持事务的MySQL存储引擎 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.