我正在编写一个通过python创建sqlite3数据库的程序.我有一个作者表(AuthorID,Name)和第二个书籍表(BookID,Title,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()
Run Code Online (Sandbox Code Playgroud)
然后我去为每个表添加一条记录,如下所示:
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()
Run Code Online (Sandbox Code Playgroud)
数据库已正确更新,但我不认为外键正常工作,因为它允许我删除作者'Jane Austin',当有书籍相关时.
我看过一些教程使用这一行:
Books.execute("PRAGMA foreign_keys = 1")
Run Code Online (Sandbox Code Playgroud)
这是问题的答案吗?如果是这样,我该把这条线放在哪里?
我在Python 2.7.8中编写了一些包含OptionMenu小部件的代码.我想创建一个OptionMenu在更改选项时调用函数但我也希望在列表中找到可能的选项,因为我的最终OptionMenu将有很多选项.
我使用以下代码创建一个OptionMenu调用函数:
from Tkinter import*
def func(value):
print(value)
root = Tk()
var = StringVar()
DropDownMenu=OptionMenu(root, var, "1", "2", "3", command=func)
DropDownMenu.place(x=10, y=10)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我还发现了以下代码,用于创建OptionMenu列表中的with选项:
from Tkinter import*
root = Tk()
Options=["1", "2", "3"]
var = StringVar()
DropDownMenu=apply(OptionMenu, (root, var) + tuple(Options))
DropDownMenu.place(x=10, y=10)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我将如何创建一个OptionMenu调用时更改选项的功能,并从列表中获取可能的选项?