从另一个表SQLite3 w / Python打印值

时间:2018-02-10 19:28:16

标签: python database sqlite foreign-keys

我想创建一个简单的配方脚本。所以我有一些食谱和一些配料。现在我将所有ingredients_id链接到配方。

是否可以从另一张表中打印这些ID的名称?

import sqlite3

conn = sqlite3.connect('food.db')

c = conn.cursor()

c.execute("""CREATE TABLE IF NOT EXISTS ingredients (
            id INTEGER PRIMARY KEY,
            name TEXT NOT NULL)""")

c.execute("""CREATE TABLE IF NOT EXISTS recipes (
            id INTEGER PRIMARY KEY, 
            name TEXT NOT NULL, 
            quantity REAL, 
            ingredients_id TEXT, 
            FOREIGN KEY(ingredients_id) REFERENCES ingredients(id)
            )""")


c.execute("INSERT INTO recipes VALUES ('0', 'Pasta with Tomato', '1', '2,3')")


c.execute("INSERT INTO ingredients VALUES ('2', 'Pasta')")

c.execute("INSERT INTO ingredients VALUES ('3', 'Tomato')")

c.execute("SELECT * FROM recipes WHERE id='0'")

print(c.fetchone())

conn.commit()

conn.close()

1 个答案:

答案 0 :(得分:0)

您的问题是经典的many-to-many关系。

每种产品都可以成为许多配方中的成分,每种配方都可以含有多种成分。

要实现这一点,您需要第3个表,其中包含"成员资格"每种食谱每种产品。对于m2m问题,这是常见的(如果不是最好的话)。

SO中有很多例子,请look for them