2012-08-13 70 views
0

我正在编写一个小函数来帮助学习如何一起使用python和sqlite3。在这个函数中,我想为单词的定义创建一个表格,并为单词的定义创建一个单独的但链接的表格。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 

我不知道为什么,这是不正确或者如何做正确。我跟着文档,仍然得到错误?

回答

0

您的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))") 
#               ^ ^  ^
+0

非常有用phihag,我没有做太多的sqlite3与和“参考”部分看上去很奇怪,所以我的语法错误消息,这是一件结构错以为偶数。感谢:D – tijko 2012-08-13 20:40:41