Database SQLite3+;Python3-使用外键创建数据库

Database SQLite3+;Python3-使用外键创建数据库,database,sqlite,python-3.x,foreign-keys,Database,Sqlite,Python 3.x,Foreign Keys,大家好 我在使用sqlite3和python3时遇到了一些问题。我想我又有了这样一个愚蠢的时刻,但我正试图从本质上努力让下表 症结似乎在于外键——我做错了什么,但我还没有弄清楚是什么——我的谷歌搜索并没有真正让我有所收获。我找不到任何好的文件。我在网上尝试了多种不同的外键语法,但没有一种能让我更接近工作表 c.execute(''' CREATE TABLE Driver ( ID INTEGER PRIMARY KEY NOT NULL UNIQUE A

大家好

我在使用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
          ''')

我收到的信息之一是-

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.
回溯(最近一次呼叫最后一次):
文件“/Users/Computer/Bitbucket/Python Project/sql.py”,第46行,在
''')
警告:一次只能执行一条语句。
第46行位于旅程创建块的末尾

提前感谢任何能够提供帮助的人:)

  • 消息告诉您,一次只能执行一条语句
  • 对于连接,只需执行一次
    PRAGMA外键
  • 执行
    begintransaction
    在这里毫无意义
  • 主键约束已暗示NOTNULL
  • 主键约束已经意味着唯一
  • 如果表名包含空格,则必须将其引用
  • 将外键声明为表约束时,必须在所有列之后写入,并且不能忘记分隔逗号
  • 将外键声明为列约束时,必须使用正确的语法:

  • 谢谢你所做的一切——你帮了我很大的忙!:)祝您有个美好的一天!
    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))
              ''')