• psycopg事务


    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,使用共同的会话,即同一个事务

  • 相关阅读:
    HTML 5 视频/音频
    vue 未完待续
    asp.net中使用log4net
    图片预加载:jquery 图片预加载功能,可以实现先模糊在清晰的显示
    IIS配置PHP环境
    学习ASP.Net的过滤器
    最好用的jQuery插件,240多个,绝对的JQUERY插件库
    Windows7&IIS7.5部署Discuz全攻略
    AjaxPro使用
    ASP.NET XML读取、增加、修改和删除操作
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/7843932.html
Copyright © 2020-2023  润新知