Pythonでpeeweeを使用してDBを作成し複数のテーブルにデータを挿入し取得する

スポンサーリンク

Pythonでpeeweeを使用してDBを作成し複数のテーブルにデータを挿入し取得してみます。

今回はpeeweeを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11)

■peeweeを使用してDBを作成し複数のテーブルにデータを挿入し取得する

では、早速Pythonでpeeweeを使用してDBを作成し複数のテーブルにデータを挿入し取得するスクリプトを書いていきます。

■コード

from peewee import *

db = SqliteDatabase(':memory:')

class Person(Model):
    name = CharField()
    age = IntegerField()

    class Meta:
        database = db

class Pet(Model):
    name = CharField()
    owner = ForeignKeyField(Person, backref='pets')

    class Meta:
        database = db

# テーブルの作成
db.create_tables([Person, Pet])

# データの挿入
person1 = Person(name='小次郎', age=25)
person1.save()

person2 = Person(name='幸子', age=30)
person2.save()

pet1 = Pet(name='ケン', owner=person1)
pet1.save()

pet2 = Pet(name='ラッキー', owner=person2)
pet2.save()

# データのクエリ
all_people = Person.select()
for person in all_people:
    print(person.name, person.age)

all_pet = Pet.select()
for pet in all_pet:
    print(pet.name)

まず、peeweeモジュールを使用してインメモリデータベースを作成し2つのテーブルを定義します。SqliteDatabaseクラスを使用しインメモリデータベースを作成します。データはメモリ内でのみ保持されるため、プログラムの実行が終了するとデータは消えます。次に、PersonとPetという2つのモデル(テーブル)を定義します。

定義後、Personモデルでは、nameとageという2つのフィールドを定義します。Petモデルでは、nameとownerという2つのフィールドを定義。ownerフィールドはPersonモデルとの関連を持ち、ForeignKeyFieldを使用して関連付けられています。

その後、create_tables()関数を使用してテーブルを作成します。create_tables()関数は、引数、パラメータとしてモデル(テーブル)のリストを受け取り、データベース内にテーブルを作成。データの挿入では、PersonとPetのインスタンスを作成し、save()関数を呼び出してデータベースに保存します。

保存後、データのクエリでは、select()メソッドを使用してデータベースからデータを取得します。select()関数を用いて、全てのレコードを取得するためのクエリを実行し、結果を返します。それぞれの結果をforループで取得し、情報を表示します。

■検証・実行

今回書いたスクリプトを「p_data.py」という名前でPythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、インメモリデータベースを使用しPersonとPetのデータを作成し、取得。取得後、挿入したデータを表示させることができました。今回はデータは日本語のデータでしたが日本語であっても表示されることが確認できました。

コメント

タイトルとURLをコピーしました