2016-05-04 9 views
0

私は問題のために適切なタイトルを思いつくのにいくつかの困難を抱えています。Python、sqlite3:複数の値を挿入するためのデータ形式?

私はSQLiteとデータベースについて少し勉強しようとしています。私は少しのエクササイズしか思いつきませんでした(私は、この特定のケースでは複数のテーブルを作ることはあまり意味がないことを認識しています。 「ハウツー」を見つける)。 データベースには、メインの「ムービーテーブル」、「年テーブル」、「ディレクターテーブル」、および「カテゴリテーブル」のようないくつかのテーブルが含まれています。 Picture for easier understanding.

テーブルを作成した後、それらにタプルのタプルを挿入したかったのです。私は "小さな"テーブルには問題ありません。

Dir = ((0, ‘Blip’), (1, ‘Blop’), (2, ‘Blap’)) 

その後:

with con: 
    cur = con.cursor()  

    cur.execute("DROP TABLE IF EXISTS Directors") 
    cur.execute("CREATE TABLE Directors(Id INT PRIMARY KEY, Director TEXT)") 
    cur.executemany("INSERT INTO Directors VALUES(?, ?, ?)", Dir) 

問題は、メインムービーのテーブルが表示されます。各ムービーに複数のカテゴリの値を渡すにはどうすればよいですか?この値のコレクションを別のタプルとして渡すべきですか?

Movies = ((‘Dog’, 0, 0, 1), (‘Cat’, 0, 0, (1, 2)), 
     (‘Ant’, 1, 1, (0, 2)), (‘Crow’, 2, 2, (0, 1, 2))) 

答えて

1

別のテーブルが必要です。これは多対多の関係であり、ムービーとカテゴリの両方に外部キーを持つテーブルが必要です。そして、あなたは(映画、カテゴリ)の各ペアのために1行を挿入することができますので:

Dog, 1 
Cat, 1 
Cat, 2 
Ant, 0 
Ant, 2 
etc. 

(また、それは各テーブルの主キーを持つことは良い習慣です:映画のために、あなたは自動インクリメントを使用する場合があります整数フィールドではなくタイトル)。

関連する問題