📅  最后修改于: 2023-12-03 15:37:51.061000             🧑  作者: Mango
外键(Foreign Key)是一种用来连接两个表的关系型数据库的组成部分。这种关系是通过在一个表的字段中引用另一个表中的字段来实现的。在 SQLite3 中,外键可以用来防止数据的不一致性,同时还可以提高数据的访问效率。
Python 的标准库 sqlite3 提供了一个轻量级的 SQL 数据库引擎。在 Python 中,可以使用 sqlite3 模块来创建、修改和查询 SQLite 数据库。使用 sqlite3 可以轻松地在 Python 应用程序中添加外键约束。
以下是在 Python 中使用 sqlite3 添加和使用外键约束的步骤:
import sqlite3
# 连接到 SQLite 数据库
conn = sqlite3.connect('example.db')
# 创建用户表格
conn.execute('''CREATE TABLE users
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INT NOT NULL,
UNIQUE(name))''')
# 创建订单表格
conn.execute('''CREATE TABLE orders
(id INTEGER PRIMARY KEY,
user_id INT NOT NULL,
amount REAL NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id))''')
# 保存更改
conn.commit()
# 关闭连接
conn.close()
# 连接到 SQLite 数据库
conn = sqlite3.connect('example.db')
# 插入用户数据
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 25))
conn.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Bob', 30))
# 插入订单数据
conn.execute("INSERT INTO orders (user_id, amount) VALUES (?, ?)", (1, 100.0))
conn.execute("INSERT INTO orders (user_id, amount) VALUES (?, ?)", (2, 200.0))
# 保存更改
conn.commit()
# 关闭连接
conn.close()
# 连接到 SQLite 数据库
conn = sqlite3.connect('example.db')
# 查询用户数据
users = conn.execute("SELECT * FROM users").fetchall()
print(users)
# 查询订单数据
orders = conn.execute("SELECT o.id, u.name, o.amount FROM orders o INNER JOIN users u ON u.id = o.user_id").fetchall()
print(orders)
# 关闭连接
conn.close()
使用 sqlite3 和外键约束,可以在 Python 应用程序中执行 SQL 查询和数据操作,同时保持数据一致性。外键约束可以在两个或多个表之间建立关系,并防止破坏这些关系的数据的插入、更新或删除。