2013-04-11 61 views
0

我試圖創建一個用於配方存儲程序的sqlite數據庫,該程序在配方表中包含人數,配料,烹飪溫度和烹飪時間。我打算在配料部分內創建另一個表格,以存儲'id'(它會自動增加);質量數(例如200);質量類型(例如g)和食物類型(例如麪粉)。在sqlite 3中創建表格(python)

我使用這個代碼,試圖獲得的變量和存儲他們:

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行,說這是一個語法錯誤...

如果任何人都可以解釋我如何解決這個問題,我會非常感激,我一直看看這段代碼的年齡!

謝謝, 瑞安:)

+0

您無法將表插入另一行中。您的SQL語法無效。 – 2013-04-11 13:23:58

+0

好的,所以我需要考慮另一種方式,然後......謝謝:) – codemonkeyz 2013-04-11 13:26:55

+0

創建*一個*表,並將數據插入到該表中。 – 2013-04-11 13:27:35

回答

1

使用兩個表,一個食譜,和一個成分,並有每種成分的記錄屬於配方的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, ...) 
+0

謝謝! :)這就是我需要做的:) – codemonkeyz 2013-04-11 17:23:48

+0

同樣的事情在這裏描述得非常清楚:http://stackoverflow.com/questions/11285305/how-to-create-nested-tables-in-sqlite-database-android – 2016-05-03 10:44:12