【问题标题】:Print values from another table SQLite3 w/ Python使用 Python 从另一个表 SQLite3 打印值
【发布时间】:2018-02-10 19:28:16
【问题描述】:

我想创建一个简单的食谱脚本。所以我有一张桌子,上面有一些食谱,一张有配料。现在我将所有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()

【问题讨论】:

    标签: python database sqlite foreign-keys


    【解决方案1】:

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

    每个产品都可以成为许多食谱的成分,每个食谱可以有多种成分。

    要实现这一点,您需要第三张表,其中包含每个产品每个配方的“会员资格”。这是 m2m 问题的常见(如果不是最佳)实践。

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

    【讨论】:

    • 非常感谢。这对我有帮助。但是是否可以将两个成分 ID 链接到一个配方并打印配方中包含的那些 ID 的名称?
    • 我不知道用 sql
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2017-11-09
    • 2018-01-28
    • 2018-09-17
    • 1970-01-01
    相关资源
    最近更新 更多