在sqlite 3(python)中创建表内的表

时间:2013-04-11 13:21:51

标签: python sqlite python-2.7

我正在尝试为食谱存储程序创建一个sqlite数据库,该程序包含在食谱表中,人数,成分,烹饪温度和烹饪时间。我打算在配料部分内创建另一个表,以存储'id'(将自动递增);质量数(例如,200);质量类型(例如,g)和食物类型(例如,面粉)。

我正在使用此代码尝试获取变量并存储它们:

    def setIngredientsInRecipe(recipeName):
        cursor.execute("""INSERT INTO %s(ingredients) CREATE TABLE\
                    (ID INT PRIMARY KEY AUTO_INCREMENT, MassNumber VARCHAR(10), MassType VARCHAR(50) FoodType VARCHAR(50))""" % (recipeName))
        print ""
        massNoInput = raw_input("Please enter your first ingredient mass(just the number): ")
        massTypeInput = raw_input("Now please input the mass type (grams etc): ")
        foodInput = raw_input("Please enter your first ingredient type: ")

        cursor.execute("""INSERT INTO %s(ingredients(MassNumber)) VALUES('%s')""" % (recipeName,massNoInput))
        cursor.execute("""INSERT INTO %s(ingredients(MassType)) VALUES('%s')""" % (recipeName,massTypeInput))
        cursor.execute("""INSERT INTO %s(ingredients(FoodType)) VALUES('%s')""" % (recipeName,foodInput))

        return recipeName

显然我稍后会添加一些数字检查,看看输入是否有效。

它在第一个cursor.execute行崩溃,说它是语法错误......

如果有人能向我解释如何解决这个问题,我会非常感激,我已经看了很久这段代码!

谢谢, 瑞恩:)

1 个答案:

答案 0 :(得分:2)

使用两个表,一个用于配方,一个用于配料,并为每个配料记录包含其所属配方的ID:

CREATE TABLE recipe(ID, People, CookingTime);
CREATE TABLE ingredient(ID, RecipeID, MassNumber, MassType, FoodType);

要将一个成分添加到配方中,只需在该表中插入一条记录即可 (这里,42是食谱的ID):

INSERT INTO ingredient(RecipeID, MassNumber, MassType, FoodType) VALUES (42, ...)