首页 > 解决方案 > 具有组合框外键的问题数据库

问题描述

在具有外键的关系数据库(SQLite)中,我有一个表Nations,其中包含以随机顺序插入的国家,如法国、意大利、英国、日本。

然后我有另一张桌子Cities,其中包含随机放置的城市,如东京、巴黎、伦敦、罗马、波尔多、京都、利物浦、米兰等。

我使用外键将城市与国家联系起来。我觉得我做得很好,问题是我不能进入每个相关国家的每个城市。

例如我不能那样做:英格兰=伦敦,利物浦;日本 = 东京、京都。

为了查看国家和城市之间的这种关系,我使用了两个组合框:我想在第一个组合框中选择一个国家,然后在第二个组合框中我想显示所选国家的相关城市。我究竟做错了什么?为什么城市和国家之间的关系不起作用?

你能回答我给我看看代码吗?谢谢

这是Nations表格:

CREATE TABLE "Nations_Table" 
(
    "ID_Nations"    INTEGER PRIMARY KEY AUTOINCREMENT,
    "Nations"   TEXT
);

这是Cities表格:

CREATE TABLE "Cities_Table" 
(
    "ID_Cities" INTEGER PRIMARY KEY AUTOINCREMENT,
    "Cities"    TEXT,
    "ID_Nations"    INTEGER,
    FOREIGN KEY("ID_Nations") REFERENCES "Nation"("ID_Nations") 
         ON DELETE NO ACTION ON UPDATE NO ACTION
);

这是我使用的 Python 代码,但它当然不能正常工作:

### COMBOBOX NATIONS ###
def combo_nations():
    cursor.execute('SELECT DISTINCT Nations_Table FROM Nation_Table')
    result=[row[0] for row in cursor]
    return result

 ### COMBOBOX CITIES ###
 def combo_cities(event=None):
     val = nations.get()
     cursor.execute('SELECT Cities_Table FROM xxxx WHERE xxxx = ?', (val,))
     result = [row[0] for row in cursor]
     citiesss['value'] = result
     citiesss.current(0)


nations=ttk.Combobox(window, width = 25)
nations['value'] = combo_nations()
nations.bind('<<ComboboxSelected>>', combo_cities)
nations.place(x=13, y=80)
nations.set("Choose Nations")

combo_cities=ttk.Combobox(window, width = 25)
combo_cities.place(x=13, y=120)
combo_cities.set("Choose Cities")

标签: pythonsqlpython-3.xpython-2.7sqlite

解决方案


推荐阅读