SQLAlchemy 事务回滚

1、通过create_engine()方法进行数据库连接,返回一个db对象后,可以直接使用engine的execute执行sql的方式,这叫connectionless执行;也可以借助engine.connect()获取conn,然后通过conn执行sql,叫做connection执行;主要差别在于是否使用transaction模式,如果不涉及transaction模式,两种方法效果是一样的,网网推荐使用后者;如果需要使用transaction,则使用ORM。

2 mysql的事务支持不是绑定在mysql服务器本身,而是与存储引擎相关。1 MyISAM:不支持事务,用于只读程序提高性能。2 InnoDB:支持ACID事务,行级锁,并发。3 Berkeley DB:支持事务

3 事务的概念:一个事务就是一连续的一组数据库操作,如果其中有一个操作失败,则整个操作都会失败。

4 事务必须满足的4个条件(ACID):原子性(A)、一致性(C)、隔离性(I)、持久性(D)

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(rollback)到事务开始前的状态。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库的可自发性地完成预定的工作。

隔离性:数据库一下多个并发事务同时多其数据进行读写和修改的能力、隔离性可以防止多个事务并发执行时,由于交叉执行而导致数据的不一致。事务隔离分为不同的级别、包括读未提交、读提交、可重复读、串行化。

持久化:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

参考:
sqlalchemy 事务回滚应用 https://www.cnblogs.com/liupeng520/articles/9486532.html
Python3-sqlalchemy-orm 回滚 https://www.cnblogs.com/drizzle-xu/p/10238353.html

你可能感兴趣的:(SQLAlchemy)