1.事务的特性

原子性,要么完成,要么都不完成

2.psycopg的事务特点

在psycopg中,事务是由connection处理的,当第一次一个命令发送给数据库时(开启数据库操作游标),

一个事务就建立了。接下来的sql命令都会在这个事务中执行,不仅仅是这个游标的sql操作命令,其他的只要是同一个连接connection

开启的游标,sql命令都会在这一个事务中进行。

如果有任何sql命令执行失败,事务将终止,不会再有sql命令执行,直到执行了rollback()方法。

代码示例如下:

import psycopg2

conn = psycopg2.connect(host='127.0.0.1', port=5432, user='postgres', password='1', database='postgres')
cursor = conn.cursor()
cursor.execute('insert into test(a,b) values(%s,%s)',(3,'huiyunyun'))
cursor.execute('SELECT a,b FROM test')
data_list = cursor.fetchall()
for item in data_list:
print(item[0])
print('---------')
cursor.close()
cursor = conn.cursor()
cursor.execute('SELECT a,b FROM test')
data_list = cursor.fetchall()
for item in data_list:
print(item[0])
print('---------')
cursor.close()
conn.close()
conn = psycopg2.connect(host='127.0.0.1', port=5432, user='postgres', password='1', database='postgres')
cursor = conn.cursor()
cursor.execute('SELECT a,b FROM test')
data_list = cursor.fetchall()
for item in data_list:
print(item[0])
print('---------')
cursor.close()
conn.close()

运行结果:

【1.png】

connection负责终止事务,执行commit()或者rollback()方法。

关闭连接close()或销毁连接del事务默认rollback

3.自动提交

设置连接为autocommit模式,命令会自动提交,持久化到数据库。

4.with语句使用

示例如下:

with psycopg2.connect(DSN) as conn:
with conn.cursor() as curs:
curs.execute(SQL)

connection结束时,没有异常发生,事务commit,否则rollback,结束事务,但是不会调用close()关闭连接;

cursor结束时,会释放与其相关的资源,但事务不会有影响

conn = psycopg2.connect(DSN)

with conn:
with conn.cursor() as curs:
curs.execute(SQL1) with conn:
with conn.cursor() as curs:
curs.execute(SQL2) conn.close()

5.线程安全

多线程使用数据库有两种方式

1)每个线程创建一个connection,使用单独的会话

2)使用相同的connection,使用共同的会话,即同一个事务

psycopg事务的更多相关文章

  1. Odoo 后端数据库postgreSQL事务级别

    Table of Contents 事务的特性 并行事务的问题 事务隔离级别 Odoo事务隔离级别 odoo事务控制         事务的特性 事务4个特性,简写未ACID 原子性(Atomicit ...

  2. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  3. SQLServer事务同步下如何收缩日志

    事务同步是SQLServer做读写分离的一种常用的方式. 随着业务数据的不断增长,数据库积攒了大量的日志,为了腾出硬盘空间,需要对数据库日志进行清理 订阅数据库的日志清理 因为订阅数据库所有的数据都来 ...

  4. 事务日志已满,原因为“ACTIVE_TRANSACTION”

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 异常处理汇总-数据库系列  http://www.cnblogs.com/dunitia ...

  5. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  6. Mysql事务探索及其在Django中的实践(一)

    前言 很早就有想开始写博客的想法,一方面是对自己近期所学知识的一些总结.沉淀,方便以后对过去的知识进行梳理.追溯,一方面也希望能通过博客来认识更多相同技术圈的朋友.所幸近期通过了博客园的申请,那么今天 ...

  7. CRL快速开发框架系列教程七(使用事务)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  8. 玩转spring boot——结合JPA事务

    接着上篇 一.准备工作 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

  9. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

随机推荐

  1. 利用jquery修改href的部分字符

    试了好久 就一句代码即可. $(document).ready(function(){ $('a').each(function(){ this.href = this.href.replace('y ...

  2. nginx深入使用

    1. nginx使用命令 nginx -s stop --快速关闭Nginx,可能不保存相关信息,并迅速终止web服务. nginx -s quit --平稳关闭Nginx,保存相关信息,有安排的结束 ...

  3. spring 自动装配 default-autowire=&quot;byName/byType&quot;

    <PRE class=html name="code">spring 自动装配 default-autowire="byName/byType"   ...

  4. JSP弹出对话框方式小结

    转自:http://blog.csdn.net/ithomer/article/details/8033002 该博主(创业)另一博客地址: http://blog.mimvp.com JSP 网页在 ...

  5. lua lua_settable

    void lua_settable (lua_State *L, int index); Does the equivalent to t[k] = v, where t is the value a ...

  6. Python实现鸢尾花数据集分类问题——基于skearn的SVM

    Python实现鸢尾花数据集分类问题——基于skearn的SVM 代码如下: # !/usr/bin/env python # encoding: utf-8 __author__ = 'Xiaoli ...

  7. 谈谈选用技术的原则,技术学习方法技巧,阅读代码的技巧及其它 MSF的一点心得

    谈谈技术原则,技术学习方法,代码阅读及其它(正文) 这篇文章是前一阵在水木BBS上和别人讨论中偶自己发言的摘编,是偶这几年开发过程完全经验式的总结.完全个人经验,供批判. 一.选用技术的原则 比较规范 ...

  8. STDIN_FILENO的作用及与stdin 的区别

    1.STDIN_FILENO的作用 STDIN_FILENO属于系统API接口库,其声明为 int 型,是一个打开文件句柄,对应的函数主要包括 open/read/write/close 等系统级调用 ...

  9. IDEA使用笔记(二)——常用快捷键

    1:在IDEA上面找到快捷键都是有哪些?如下图所示: 2:导出快捷键的描述文件,打印一份,慢慢看,多使用,慢慢的就记住了 3:我自己在开发中经常使用的IDEA快捷键,主要是导航.查找.编辑相关的,如下 ...

  10. python练习笔记——组合恒等式

    排列组合结合恒等式 已知从n个物品中取出m个,则存在一个组合恒等式. C(n, m)=C(n, n-m)=C(n-1, m-1)+C(n-1,m) 其中C(n,0) = 1 求:从5取3 和 10 取 ...