微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

事务查询结束时额外 conn.commit() 的目的

如何解决事务查询结束时额外 conn.commit() 的目的

以下示例 Python 代码对我在 VPC 中创建的 MysqL RDS 实例中的 Employee 表运行 SELECT 查询。该代码在 ExampleDB 数据库中创建一个表,添加示例记录并检索这些记录。这是 AWS documentation

上的邮件代码片段
import sys
import logging
import rds_config
import pyMysqL
#rds settings
rds_host  = "rds-instance-endpoint"
name = rds_config.db_username
password = rds_config.db_password
db_name = rds_config.db_name

logger = logging.getLogger()
logger.setLevel(logging.INFO)

try:
    conn = pyMysqL.connect(rds_host,user=name,passwd=password,db=db_name,connect_timeout=5)
except pyMysqL.MysqLError as e:
    logger.error("ERROR: Unexpected error: Could not connect to MysqL instance.")
    logger.error(e)
    sys.exit()

logger.info("SUCCESS: Connection to RDS MysqL instance succeeded")
def handler(event,context):
    """
    This function fetches content from MysqL RDS instance
    """

    item_count = 0

    with conn.cursor() as cur:
        cur.execute("create table Employee ( EmpID  int NOT NULL,Name varchar(255) NOT NULL,PRIMARY KEY (EmpID))")
        cur.execute('insert into Employee (EmpID,Name) values(1,"Joe")')
        cur.execute('insert into Employee (EmpID,Name) values(2,"Bob")')
        cur.execute('insert into Employee (EmpID,Name) values(3,"Mary")')
        conn.commit()
        cur.execute("select * from Employee")
        for row in cur:
            item_count += 1
            logger.info(row)
            #print(row)
    conn.commit() # <<-------------- why this line needed

    return "Added %d items from RDS MysqL table" %(item_count)

根据我的理解,第一个 conn.commit() 确保我执行的所有更改(例如 1 CREATE 和 3 }} 但我的困惑是最后一个 cursor.commit() 返回前的目的是什么,当我删除那行时它工作正常。如果我在这里遗漏了什么,请澄清。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?