我正在尝试使用sqlite3在python中创建关系数据库。关于如何连接数据库中的表,以便一个实体通过第二个表连接到另一个实体,我有点挑剔。我希望能够通过网页搜索人名,然后找到与该人相关的父母。我不确定我是否需要两张桌子或三张桌子。
这就是我的代码现在的样子:
class Database:
'''Initiates the database.'''
def __init__(self):
self.db = sqlite3.connect('family2.db')
def createTable(self):
r = self.db.execute('''
CREATE TABLE IF NOT EXISTS family2 (
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
fname TEXT,
sname TEXT,
birthdate TEXT,
deathdate TEXT,
mother TEXT,
father TEXT
)''')
self.db.commit()
g = self.db.execute('''CREATE TABLE IF NOT EXISTS parents(
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
mother TEXT,
father TEXT)''')
self.db.commit()
b = self.db.execute('''CREATE TABLE IF NOT EXISTS relations(
id INTEGER PRIMARY KEY ASC AUTOINCREMENT,
family2,
parents TEXT
)''')
self.db.commit()
提前致谢!
答案 0 :(得分:1)
您不需要多个表格;您可以在表格中存储父项的ID:
CREATE TABLE persons(
id INTEGER PRIMARY KEY,
name TEXT,
mother_id INT,
father_id INT
);
然后,您可以通过以下查询找到由其名称标识的人的母亲:
SELECT *
FROM persons
WHERE id = (SELECT mother_id
FROM persons
WHERE name = '...')