我想创建一个简单的配方脚本。所以我有一些食谱和一些配料。现在我将所有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()
答案 0 :(得分:0)
您的问题是经典的many-to-many关系。
每种产品都可以成为许多配方中的成分,每种配方都可以含有多种成分。
要实现这一点,您需要第3个表,其中包含"成员资格"每种食谱每种产品。对于m2m问题,这是常见的(如果不是最好的话)。
SO中有很多例子,请look for them