问题描述
以下示例 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 (将#修改为@)