我正在尝试创建一个简单的AWS Lambda函数,以从Amazon RDS(MySQL db)中获取几行并以json格式返回。
如果我尝试附加对象实例,则会收到错误消息,指出XXX类型的对象不可json序列化。如果我做下面的事情,那么我只会从数据库中获得最新的条目。 (这与https://hackersandslackers.com/create-a-rest-api-endpoint-using-aws-lambda/中显示的内容不同)。
def save_events(event):
result = []
conn = pymysql.connect(rds_host,user=name,passwd=password,db=db_name,connect_timeout=5)
with conn:
cur = conn.cursor()
cur.execute("select * from tblEmployees")
rows = cur.fetchall()
for row in rows:
employee = Employee(row)
data['Id'] = employee.id
data['Name']= employee.name
result.append(data)
return result
def main(event, context):
data = save_events(event)
return {
"StatusCode":200,
"Employee": data
}
我知道变量“ data”的内容会更改运行时,并且会影响result.append()。我在表tblEmployees中有4个条目。上面的输出在结果中获得4个条目,但是所有四个条目都是相同的(并且等于db中的最新记录)。 json.dumps()无效,因为数据为unicode格式。我已经尝试过.toJSON()和byteify(),但是它没有用。 有帮助吗?
答案 0 :(得分:0)
您应该重新创建数据,以避免覆盖旧值:
for row in rows:
employee = Employee(row)
data = new Dict(Id=employee.id, Name=employee.name)
result.append(data)