python运行sql文件且失败可以回滚
Posted 神的孩子都在歌唱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python运行sql文件且失败可以回滚相关的知识,希望对你有一定的参考价值。
前言
公司需要一个能对数据库升级脚本,也就是执行sql文件,并且需要有事务错误回滚
首先我们连接到数据库,然后将 autocommit 设置为 False,这样才能启用事务。
接下来,我们打开 SQL 文件,并将其内容读入变量 sql_file
。然后,我们使用游标执行 SQL 语句。
如果在执行过程中出现错误,则会触发异常,并在 except 块中执行回滚操作。如果没有出现错误,则会在 try 块中执行提交操作。
最后,我们关闭连接。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import psycopg2
# 数据库文件
fileSql = "test.sql"
# 数据库地址
host = ""
# 数据库名
database = ""
# 用户名
user = ""
# 密码
password = ""
# 数据库开放端口
port = 5432
def sqlUpdate():
try:
conn = psycopg2.connect(
host=host,
database=database,
user=user,
password=password,
port=port
)
conn.autocommit = False
cur = conn.cursor()
with open(fileSql, encoding="utf-8") as f:
cur.execute(f.read())
conn.commit()
except Exception as e:
conn.rollback()
print("Transaction rolled back: ".format(e))
raise e
finally:
cur.close()
conn.close()
if __name__ == '__main__':
sqlUpdate()
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。
以上是关于python运行sql文件且失败可以回滚的主要内容,如果未能解决你的问题,请参考以下文章