SQLite3で相互参照を持つ複数のテーブルを作成する方法


まず、SQLite3データベースに接続します。以下のコードを使用して、データベースへの接続と作成を行います。

import sqlite3
# データベースに接続
conn = sqlite3.connect('mydatabase.db')
# カーソルを取得
cursor = conn.cursor()

次に、テーブルを作成します。相互参照を持つ2つのテーブルを作成する例を示します。一方のテーブルに他方のテーブルへの参照を追加します。

# テーブル1の作成
cursor.execute('''CREATE TABLE table1
                  (id INTEGER PRIMARY KEY,
                   name TEXT,
                   table2_id INTEGER,
                   FOREIGN KEY(table2_id) REFERENCES table2(id))''')
# テーブル2の作成
cursor.execute('''CREATE TABLE table2
                  (id INTEGER PRIMARY KEY,
                   name TEXT,
                   table1_id INTEGER,
                   FOREIGN KEY(table1_id) REFERENCES table1(id))''')

上記の例では、table1table2という2つのテーブルを作成しています。table1table2_id列は、table2id列を参照しています。同様に、table2table1_id列は、table1id列を参照しています。これにより、相互参照が実現されます。

最後に、データベースへの変更を確定し、接続を閉じます。

# 変更を確定
conn.commit()
# 接続を閉じる
conn.close()

これで、SQLite3データベースに相互参照を持つ複数のテーブルが作成されました。