首页 > 解决方案 > 从插入查询中获取数据?

问题描述

我在这里为一个食谱创建一个帖子,它有一个recipe_id并且是自动递增的,并且在同一页面上它将返回一个要添加到食谱中的成分列表

def recipeCreate():                                                                                                                           

    if request.method == 'POST':                                  
        userposted = session['user_ID']                           
        title = request.form['title']                             
        prep_time = request.form['preptime']                      
        cook_time = request.form['cooktime']                      
        description = request.form['description']                 
        category = request.form['category']                       
        diet = request.form['diet']                               
        calories = request.form['calories']                       

        c = sq.connection.cursor()                                
        c.execute('INSERT INTO recipe_post (posted_by, name, description, prep_time, cook_time, category, diet, calories)VALUES(%s,%s,%s,%s,%s,%s,%s,%s)',(userposted, title, description, prep_time, cook_time, category, diet, calories))
        sq.connection.commit()                                    
        c.close()                                                 

        return "<h1>Form successfully submitted</h1>"             

    c = sq.connection.cursor()                                    
    result = c.execute('SELECT * FROM Ingredients')               
    data = c.fetchall()                                           

    return render_template('recipe/recipe_form.html', data=data)  

成分表上的每种成分都是一个<a>标签,链接到这个标签,这将为帖子添加成分

@app.route('/recipe/create/add/<recipe_id>/<ingredient_id>/<quantity>')                                                               
def addRecipeIngredient(recipe_id,ingredient_id,quantity):                                                                            
    recipe_id = int(recipe_id)                                                                                                        
    ingredient_id = int(ingredient_id)                                                                                                
    quantity = int(quantity)                                                                                                          
    c = sq.connection.cursor()                                                                                                        

    result = c.execute('INSERT INTO recipe_ingredients(recipe_id,i_id,quantity) VALUES(%s,%s,%s)',(recipe_id,ingredient_id,quantity)) 
    sq.connection.commit()                                                                                                            
    c.close()                                                                                                                         

    INSERT INTO recipe_ingredients(recipe_id,i_id,quantity) VALUES(%s,%s,%s)

我的问题是我无法将recipe_idfromrecipeCreate()插入到配方成分表中,因为它是一个尚未创建/查询的帖子。

我正在考虑recipe_post先插入数据,然后在下一页中插入成分数据,但我仍然遇到获取recipe_id.

我该如何解决这个问题,有没有办法从插入查询中获取数据?

标签: pythonmysqlflask

解决方案


您可以使用请求连接上的最后一个 IDsq.connection.insert_id()

如果该功能不可用,请告诉我您正在使用的 sql 库的名称。


推荐阅读