欢迎访问宙启技术站
智能推送

Python中使用app.dbForeignKey()外键实现表格间的关联

发布时间:2024-01-08 19:21:51

在 Python 中使用外键的概念可以实现表格间的关联,这在数据库设计中是一个非常重要的概念。Python 中的一个流行的关系型数据库管理系统是 SQLite,我们可以使用 SQLite3 模块来实现数据库操作。

首先,我们需要导入 SQLite3 模块并建立数据库连接:

import sqlite3

# 连接数据库并创建一个游标

conn = sqlite3.connect('example.db')

cursor = conn.cursor()

现在,我们可以创建一个父表和一个子表,并使用外键将它们关联起来:

# 创建一个父表

cursor.execute('''CREATE TABLE parents

                  (id INTEGER PRIMARY KEY AUTOINCREMENT,

                  name TEXT NOT NULL)''')

# 创建一个子表,并引用父表的 id 字段作为外键

cursor.execute('''CREATE TABLE children

                  (id INTEGER PRIMARY KEY AUTOINCREMENT,

                  name TEXT NOT NULL,

                  parent_id INTEGER,

                  FOREIGN KEY (parent_id) REFERENCES parents(id))''')

现在我们可以插入一些数据到父表和子表中:

# 插入父表数据

cursor.execute("INSERT INTO parents (name) VALUES ('John')")

cursor.execute("INSERT INTO parents (name) VALUES ('Jane')")

# 获取父表插入数据的 id

parent_id = cursor.lastrowid

# 插入子表数据,并引用父表的 id

cursor.execute("INSERT INTO children (name, parent_id) VALUES ('Michael', ?)", (parent_id,))

cursor.execute("INSERT INTO children (name, parent_id) VALUES ('Emily', ?)", (parent_id,))

现在我们可以进行一些查询操作来验证外键关系是否正常:

# 查询所有父表和子表数据

cursor.execute("SELECT * FROM parents")

print(cursor.fetchall())

cursor.execute("SELECT * FROM children")

print(cursor.fetchall())

# 查询某个父表关联的子表数据

cursor.execute("SELECT * FROM children WHERE parent_id=?", (parent_id,))

print(cursor.fetchall())

最后,我们需要提交事务并关闭数据库连接:

# 提交事务并关闭数据库连接

conn.commit()

conn.close()

这是一个简单的使用外键的例子。外键的主要作用是在表格间建立关联,从而保持数据的完整性和一致性。在实际应用中,外键还可以用于实现级联删除或更新等功能,以及其他复杂的查询操作。