0

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

なぜこれが間違っているのか、それを正しく行う方法がわかりません。ドキュメントをフォローしてもエラーが発生しますか?

4

1 に答える 1

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))")
#                                                             ^     ^         ^
于 2012-08-13T20:31:14.230 に答える