PythonでSQLModelを使用しデータベースとテーブルを作成してみます。
今回はSQLModelライブラリ・モジュールを使用します。SQLModelはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■SQLModelを使用しデータベースとテーブルを作成する
では、早速SQLModelを使用しデータベースとテーブルを作成するスクリプトを書いていきます。
■コード
from typing import Optional from sqlalchemy.sql.expression import table from sqlmodel import Field,SQLModel,create_engine import sqlmodel class sql_test(SQLModel,table=True): id: Optional[int] = Field(default=None,primary_key=True) name: str age:Optional[int] = None sqlite_file_name = "database_test.db" sqlite_url = f"sqlite:///C:\\pg\\sqiite3\\{sqlite_file_name}" engine = create_engine(sqlite_url,echo=True) SQLModel.metadata.create_all(engine)
今回は、テーブル内のデータを表すクラスであるsql_testを作成します。括弧内で引数,パラメータとして「table=True」を渡し、SQLModelにテーブルを表すことを通知する。
クラスを作成後、クラス内にクラスのフィールドまたは列を定義します。なお、変数の名前が、テーブルの列の名前となります。今回はid,name,ageというテーブルの列を定義します。
定義後、SQLAlchemyエンジンを作成します。これはデータベースとの通信を処理するオブジェクトとなります。作成する場合は、create_engine()を用いて、括弧内に引数,パラメータとして使用するデータベースのURLを渡します。なお、今回はローカル上(C:\pg\sqiite3(フォルダパス))にSQLite3をインストールし、インストールした先のパスを指定しています。さらに、作成されるデータベースのファイルの名前を「database_test.db」としています。
最後にSQLModel.metadata.create_all()を用いて、括弧内に引数,パラメータとして作成したSQLAlchemyエンジンを渡します。これでデータベースとテーブルを作成することができます。
■実行・検証
このスクリプトを「sql_test_01.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
2021-12-23 13:50:47,888 INFO sqlalchemy.engine.Engine BEGIN (implicit) 2021-12-23 13:50:47,888 INFO sqlalchemy.engine.Engine PRAGMA main.table_info("sql_test") 2021-12-23 13:50:47,889 INFO sqlalchemy.engine.Engine [raw sql] () 2021-12-23 13:50:47,892 INFO sqlalchemy.engine.Engine PRAGMA temp.table_info("sql_test") 2021-12-23 13:50:47,892 INFO sqlalchemy.engine.Engine [raw sql] () 2021-12-23 13:50:47,893 INFO sqlalchemy.engine.Engine CREATE TABLE sql_test ( id INTEGER, name VARCHAR NOT NULL, age INTEGER, PRIMARY KEY (id) ) 2021-12-23 13:50:47,894 INFO sqlalchemy.engine.Engine [no key 0.00021s] () 2021-12-23 13:50:47,899 INFO sqlalchemy.engine.Engine CREATE INDEX ix_sql_test_name ON sql_test (name) 2021-12-23 13:50:47,899 INFO sqlalchemy.engine.Engine [no key 0.00029s] () 2021-12-23 13:50:47,908 INFO sqlalchemy.engine.Engine CREATE INDEX ix_sql_test_age ON sql_test (age) 2021-12-23 13:50:47,908 INFO sqlalchemy.engine.Engine [no key 0.00022s] () 2021-12-23 13:50:47,913 INFO sqlalchemy.engine.Engine CREATE INDEX ix_sql_test_id ON sql_test (id) 2021-12-23 13:50:47,913 INFO sqlalchemy.engine.Engine [no key 0.00021s] () 2021-12-23 13:50:47,920 INFO sqlalchemy.engine.Engine COMMIT
実行してみると、コマンドプロンプト上に上記のメッセージが出力されます。
出力後、ローカル上のフォルダを確認してみると「database_test.db」というファイルが作成されていました。
確認後、DB Browser for SQLiteを用いて、データベースファイルの中身を確認すると、定義した列が追加されていることが確認できました。
コメント