Django之事务

Django之事务

   事务就是将一组操作捆绑在一起,只有当这一组操作全部都成功以后这个事务才算成功;当这组操作中有任何一个没有操作成功,则这个操作就会回滚,回到操作之前的状态.

  其中牵扯到向数据库中写数据的操作时,看起来未成功的操作实际上已经写进数据库了,在发生异常以后,回滚过程中,将这些数据进行删除,恢复到操作之前,当你再次往数据库中写数据时,id将会被占用,也就是说id会出现断了的情况,就是之前写入删除导致的.

  先搭建一个py文件运行的环境:

 1 import os
 2 
 3 if __name__ == '__main__':
 4     os.envuron.setdefault('DJANGO_SETTINGS_MODULE', 'BMS.settings')
 5 
 6     import django
 7 
 8     django.setup()
 9 
10 
11     import datetime
12     from app01 import models
13 
14     try:
15 
16         from django.db import transaction
17 
18         with transaction.atomic():
19             new_publisher = models.Publisher.objects.create(name='刺激战场')
20             models.Book.objects.create(title='机场钢枪',
21          publish_date = datetime.date.today(), 
22          publisher_id=10) # 指定一个不存在的出版社ID 23 24 except Exception as e: 25 print(str(e))

  因为出版社不存在,当程序执行到 publisher_id=10 时,发生错误,程序回滚,回到程序开始执行之前的状态.然后打印异常.

原文地址:https://www.cnblogs.com/ZN-225/p/9781119.html