概要
- SQLAlchemyには
ORM
とCore
があるが、今回はCoreのみを扱う。
参考
環境構築
# Pythonのバージョンを確認
python --version
> Python 3.7.3
# SQLAlchemyのインストール
> pip install SQLAlchemy
メタデータによるスキーマの定義
メタデータとは、テーブルのスキーマをPythonのコード上で定義する方法。
データベース管理システム(DBMS)に依存しない方法でスキーマを記述できる。
以下のようにPythonで書く。
from sqlalchemy import Table, Column, Integer, String, MetaData, create_engine
# インメモリデータベースを使用
engine = create_engine('sqlite:///:memory:')
meta = MetaData(engine, reflect=True)
users = Table('Users', meta,
Column('id', Integer, primary_key=True),
Column('name', String),
Column('age', Integer)
)
# metaデータの内容をデータベースに反映
meta.create_all()
with engine.connect() as con:
rows = ({"id": 1, "name": "Sato", "age": 31},
{"id": 2, "name": "Suzuki", "age": 18},
{"id": 3, "name": "Yamada", "age": 40},
{"id": 4, "name": "Tanaka", "age": 30},
)
# INSERT文を実行
for row in rows:
con.execute("INSERT INTO USERS (id, name, age) VALUES(:id, :name, :age)", row)
# SELECT文を実行
rows = con.execute("SELECT * FROM USERS")
for row in rows:
print(row)
結果
(1, 'Sato', 31)
(2, 'Suzuki', 18)
(3, 'Yamada', 40)
(4, 'Tanaka', 30)
補足
-
reflect=True
を指定することにより自動的にデータベースのテーブル情報がメタデータに格納されていることが確認できる。 -
インメモリデータベース
はデータをHDDやSSDに保存するのではなく、メモリ上に記録する。そのため、ファイル実行が完了した時や、Pythonコマンドラインを抜けるなど、一連の処理が完了したら記録されていたデータは消えるので簡単に操作を試すときに有用。