(Python,sqlite3)构建关系数据库?

时间:2013-11-21 15:34:46

标签: python database sqlite relational

我正在尝试使用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()   

提前致谢!

1 个答案:

答案 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 = '...')