python mysql提交出错,python pymysql设置自动提交false失败

my script reads MYSQL UPDATE queries from a file and then should execute them at once by using autocommit = 0. However, if I remove conn.commit() it still runs one by one, although I have not commited. Where is the error?

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

解决方案

Transactions are not supported with MyISAM storage engine in MySQL. Only InnoDB suports ACID transactions.

In transactional terms, MyISAM tables effectively always operate in

autocommit = 1 mode.

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)

Move tables to a MySQL storage engine that supports transactions.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值