gpt4 book ai didi

python - 与三个表的两个一对多关系

转载 作者:行者123 更新时间:2023-12-01 06:11:17 26 4
gpt4 key购买 nike

import sqlite3

# get connection and cursor objects
conn = sqlite3.connect('iodatabase.sdb')
c = conn.cursor()

# create tables
c.execute('''create table grand_parent (
id integer primary key autoincrement,
name text
)''')


c.execute('''create table parent (
id integer primary key autoincrement,
name text
grand_parent_id text,
FOREIGN KEY(grand_parent_id) REFERENCES grand_parent(name)
)''')

c.execute('''create table child (
id integer primary key autoincrement,
name text,
module text,
type text,
desc text,
parent_id text,
FOREIGN KEY(parent_id) REFERENCES parent(name)
)''')

c.execute("INSERT INTO grand_parent VALUES(null, 'AS1')")

c.execute("INSERT INTO parent VALUES(null, 'Parent1', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child1', 'AO', 'CVXY', '1', 'Parent1', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child2', 'AO', 'CVXY', '1', 'Parent1', 'AS1')"
c.execute("INSERT INTO child VALUES(null, 'Child3', 'AI', 'FTRE', '1', 'Parent1', 'AS1')"
c.execute("INSERT INTO child VALUES(null, 'Child4', 'AI', 'FTRE', '1', 'Parent1', 'AS1')")

c.execute("INSERT INTO parent VALUES(null, 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child1', 'AO', 'CVXY', '1', 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child6', 'AI', 'FTRE', '1', 'Parent2', 'AS1')")
c.execute("INSERT INTO child VALUES(null, 'Child4', 'BO', 'MESR', '1', 'Parent2', 'AS1')")

大家好,

我有三张 table 。一张将是祖 parent ,一张将是 parent ,最后一张将是子表。我的意思是,我希望我的 child 数据知道它属于哪个 parent 和祖 parent 。另外,我希望我的 parent 数据知道它属于哪个祖 parent 。我尝试自己做。但我不能。我应该如何设置表之间的关系?表结构应该如何?

提前致谢。

编辑

忽略该代码。只需在原始 SQL 中设置三个表即可满足所需的关系。这是我第一次做这样的事情,需要指导。

最佳答案

如果我理解的话:

问题出在这里:FOREIGN KEY(parent_id) REFERENCES Parent(name) 并且将是FOREIGN KEY(parent_id) REFERENCES Parent(id)。引用 ID 而不是名称。

引用父表,通过查询,您可以从子表返回祖 parent 记录。

如果不是您想要的,请评论。

关于python - 与三个表的两个一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com