如何解决事务查询结束时额外 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 举报,一经查实,本站将立刻删除。