如何在pymysql中开始事务? (MySQL的)

时间:2016-07-11 01:59:13

标签: python mysql pymysql

我想在pymysql下使用mysql脚本以下运行。

START TRANSACTION;
BEGIN;
insert into ~~~ 
COMMIT;

我的python源代码是

connection = pymysql.connect(~~~~~~~)
     with connection.cursor() as cursor :
         connection.begin()
         cursor.execute(~~.sql)
         connection.commit()
connection.close()

我的问题是" connection.begin()"是同样的事情" START TRANSACTION; BEGIN;" ?我想使用" START TRANSACTION; BEGIN;"

2 个答案:

答案 0 :(得分:1)

根据PyMySQL docs/example(单数...这似乎不是一个支持得很好的包),默认情况下自动提交已关闭,因此您需要运行connection.commit()实际上完成了交易。

他们的例子:

import pymysql.cursors

connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # connection is not autocommit by default. So you must commit to save changes.
    connection.commit()

finally:
    connection.close()

答案 1 :(得分:0)

pymysql.connections.Connection.begin

查看manual了解更多信息