Oll*_*lie 4 database sqlite foreign-keys python-3.x
大家好,
我在使用 sqlite3 和 python3 时遇到了一些问题。我想我又经历了那些愚蠢的时刻之一,但我基本上正在努力制作下表。
症结似乎是外键 - 我做错了什么,但我还没有完全弄清楚是什么 - 而且我的谷歌搜索并没有真正让我到任何地方。我找不到任何好的文档。我已经尝试了多种不同的在线外键语法,但没有一个能让我更接近工作表。

c.execute('''
CREATE TABLE Driver (
ID INTEGER PRIMARY KEY NOT NULL UNIQUE AUTOINCREMENT,
FirstName text,
LastName text,
RegistrationNo text)
''')
c.execute('''
CREATE TABLE Passenger (
ID INTEGER PRIMARY KEY NOT NULL UNIQUE AUTOINCREMENT,
FirstName text,
LastName text)
''')
c.execute('''
pragma foreign_keys=on;
begin transaction;
CREATE TABLE Journey (
ID INTEGER PRIMARY KEY NOT NULL UNIQUE AUTOINCREMENT,
Driver_ID INTEGER NOT NULL
FOREIGN KEY (Driver_ID) REFERENCES Driver,
Origin text,
Destination text,
SeatsAvailable integer,
Date text,
Time text,
DriverNotes text,
PassengerNotes text)
''')
c.execute('''
pragma foreign_keys=on;
begin transaction;
CREATE TABLE Assigned Passengers (
ID INTEGER PRIMARY KEY NOT NULL UNIQUE AUTOINCREMENT,
Journey_ID INTEGER NOT NULL
FOREIGN KEY (Journey_ID) REFERENCES Journey,
Passenger_ID INTEGER NOT NULL
FOREIGN KEY (Passenger_ID) REFERENCES Passenger
''')
Run Code Online (Sandbox Code Playgroud)
我收到的消息之一是 -
Traceback (most recent call last):
File "/Users/Computer/Bitbucket/Python Project/sql.py", line 46, in <module>
''')
sqlite3.Warning: You can only execute one statement at a time.
Run Code Online (Sandbox Code Playgroud)
第 46 行位于 Journey 创建块的末尾。
预先感谢任何可以提供帮助的人:)
PRAGMA foreign_keys您只需为连接执行一次。BEGIN TRANSACTIOn在这里没有任何意义。c.execute('''
CREATE TABLE Journey (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Driver_ID INTEGER NOT NULL REFERENCES Driver(ID),
Origin text,
Destination text,
SeatsAvailable integer,
Date text,
Time text,
DriverNotes text,
PassengerNotes text)
''')
c.execute('''
CREATE TABLE Assigned_Passengers (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
Journey_ID INTEGER NOT NULL REFERENCES Journey(ID),
Passenger_ID INTEGER NOT NULL REFERENCES Passenger(ID))
''')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3389 次 |
| 最近记录: |