gpt4 book ai didi

python - 在 Python 的 sqlite3 中使用外键

转载 作者:IT王子 更新时间:2023-10-29 06:23:37 26 4
gpt4 key购买 nike

我正在编写一个程序,通过 python 创建一个 sqlite3 数据库。我有一个作者表(AuthorID、姓名)和第二个书表(BookID、标题、AuthorID),我创建了这些表,如下所示:

Authors = sqlite3.connect('Authors.db')
Authors.execute('''CREATE TABLE Authors
(AuthorID INT PRIMARY KEY,
Name TEXT);''')
Authors.close()


Books = sqlite3.connect('Books.db')
Books.execute('''CREATE TABLE Books
(BookID INT PRIMARY KEY,
Title TEXT,
AuthorID INT,
FOREIGN KEY(AuthorID) REFERENCES Authors(AuthorID));''')
Books.close()

然后我去向每个表添加一条记录,如下所示:

Authors = sqlite3.connect('Authors.db') 
Authors.execute("INSERT INTO Authors (AuthorID, Name) \
VALUES (1, 'Jane Austin')");

Authors.commit()
Authors.close()


Books = sqlite3.connect('Books.db')
Books.execute("INSERT INTO Books (BookID, Title, AuthorID) \
VALUES (1, 'Emma', 1)");

Books.commit()
Books.close()

数据库已正确更新,但我认为外键无法正常工作,因为它允许我在有相关书籍时删除作者“Jane Austin”。

我看过一些教程使用这一行:

Books.execute("PRAGMA foreign_keys = 1")

这是问题的答案吗?如果是,我应该把这条线放在哪里?

最佳答案

PRAGMA foreign_keys 设置适用于连接,因此您应该在调用 sqlite3.connect() 后立即执行它。

请注意,外键约束仅在同一个数据库内有效;您应该将两个表放入同一个文件中。

关于python - 在 Python 的 sqlite3 中使用外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29420910/

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