Python使用sqlite3创建两个带外键的表?

时间:2012-08-13 20:24:41

标签: python sqlite foreign-keys

我正在编写一个小函数来帮助学习如何一起使用python和sqlite3。在这个函数中,我想为词汇单词创建一个表,并为单词的定义创建一个单独的但是链接的表。

我有这个:

import sqlite3

con = sqlite3.connect'words.db'
with con:
    cur = con.cursor()
    cur.execute("CREATE TABLE vocab(vocab_id INTEGER PRIMARY KEY, word TEXT)")

当我尝试为定义创建一个单独的表时,我的麻烦很好。

我会在上面的代码下面继续下一行,如下所示:

    cur.execute("CREATE TABLE definitions(def_id INTEGER, def TEXT, word_def INTEGER, FOREIGN KEY(word_def) REFERENCES(vocab,vocab_id)")

我正在阅读关于如何使用外键的sqlite3的文档,上面这一行的最后一部分是我认为它应该如何完成。

这是返回的错误消息:

<sqlite3.Cursor object at 0xb782b720>
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
sqlite3.OperationalError: near "(": syntax error

我不知道为什么这是不正确的或如何正确地做到这一点。我按照文档仍然得到错误?

1 个答案:

答案 0 :(得分:1)

您的SQL语法错误:REFERENCES应采用table(column)的形式,您需要另一个右括号。尝试

cur.execute("CREATE TABLE definitions (def_id INTEGER, def TEXT,"
           "word_def INTEGER, FOREIGN KEY(word_def) REFERENCES vocab(vocab_id))")
#                                                             ^     ^         ^