我目前在将食物从json写入数据库时遇到了一些重大问题。get方法工作得很好。但是,当我收到一个json时,它并没有正确地写入数据库。
我要做的是
将新餐点写入数据库(通过自动增量创建新餐点/购物车id)
使用最后一个\u insert \u id()命令将新食物写入该食物/购物车。
一旦我到了这里,写一种食物就可以了,但是如果有很多食物,我似乎无法让它把其他食物从json写到数据库中。
我收到的json如下:
Endpoint: /meallog
Request params:{
method: ”post”,
headers: headers,
url: string,
data:{
userId: string,
date: string,
mealData:{
mealName: String,
food: [
{
id:string,
foodname:string,
numCal:int,
servingSize:int,
servingSizeUnit:string,
totalCalories:int
},
{
(repeat above)
}
]
}
}
}
Response: (JSON Object)
{
code: 200/400,
message: String
}
我目前的职位代码如下:
elif request.method == 'POST':
jsondata = {}
code={}
user_id = request.json['user_id']
date = request.json['date']
mealName = request.json['mealName']
food_id = request.json['id']
food_name = request.json['foodname']
food_cal = request.json['numCal']
serving_size = request.json['servingSize']
serving_unit = request.json['servingSizeUnit']
totalCal = request.json['totalCalories']
postmeal = conn.cursor()
INS_meal = "INSERT INTO user_cart (user_id, datetime, cart_cal, cart_name) VALUES (%s, %s, %s, %s);"
postmeal.execute(INS_meal, (user_id, date, totalCal, mealName))
conn.commit()
postfood = conn.cursor()
INS_food = "INSERT INTO food_log VALUES (LAST_INSERT_ID(), %s, %s, %s, %s, %s);"
postfood.execute(INS_food, (food_id, food_name, food_cal, serving_size, serving_unit))
conn.commit()
if postfood.execute and postmeal.execute:
code['code'] = '200'
code['message'] = 'Success! INSERTED values into both food_log and user_cart'
else:
code['code'] = '400'
code['message'] = 'Error Connecting to DB. Cant insert into food_log and-or user_cart'
jsondata['code'] = code['code']
jsondata['message'] = code['message']
return(json.dumps(jsondata))
基本上,我希望它能够收集所有食物,并将数组中的所有食物对象无缝地写入食物表。
1条答案
按热度按时间57hvy0tb1#
我修复了我的问题,以一种更结构化的方式使用了last\u insert\u id(),并正确地循环了传入的食物。