尝试使外键为sqlit3 p

时间:2019-11-24 21:05:33

标签: python sqlite

我正在尝试创建外键,以显示学生已设置的作业。我已经完成了我认为正确的语法,但是我不断收到数据库其他部分的语法错误。我不确定这是否是由于外键造成的,否则就不会发生。

c.execute("""CREATE TABLE IF NOT EXISTS HomeworkInfo (
            HWID INTEGER PRIMARY KEY AUTOINCREMENT,
            HomeworkName text);""")

c.execute("""CREATE TABLE IF NOT EXISTS HomeworkSet (
            HWID text,
            FOREIGN KEY (HWID) REFERENCES HomeworkInfo(HWID),
            FName text,
            SName text,
            Results text);""")



line 36, in <module>
    Results text);""")

    OperationalError: near "FName": syntax error

2 个答案:

答案 0 :(得分:0)

在语句末尾移动外键的定义:

CREATE TABLE IF NOT EXISTS HomeworkSet (
            HWID text,
            FName text,
            SName text,
            Results text,
            FOREIGN KEY (HWID) REFERENCES HomeworkInfo(HWID)
            );

或这样定义它:

CREATE TABLE IF NOT EXISTS HomeworkSet (
            HWID text REFERENCES HomeworkInfo(HWID),
            FName text,
            SName text,
            Results text
            );

您可以在这里找到有关外键定义的更多信息:SQLite Foreign Key Support

答案 1 :(得分:0)

只是一个猜测,但在您的示例中,HomeworkInfo.HWID似乎是integer,而HomeworkSet.HWIDtext。它们应该不是同一类型吗?