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のデータを作成し、取得。取得後、挿入したデータを表示させることができました。今回はデータは日本語のデータでしたが日本語であっても表示されることが確認できました。
コメント