SQLAlchemyについてまとめる. pandasのto_sql,read_sql及びSQLAlchemyの簡単そうな部分をウワーッと読んで使っていたので,改めて見直し.
この章構成に従って読んでいく.
- Establishing Connectivity - the Engine
- Working with Transactions and the DBAPI
- Working with Database Metadata
- Working with Data
- Data Manipulation with the ORM
- Working with Related Objects
- Further Reading
そもそもORMが何を指すのかすら分かっていないので,何とか今日中に最低限の知識を身につけたい.
こんな風に使いたい
Database classを以下のように設計してみる.
- コンストラクタで既存のデータベースの有無をチェック
- テーブルを追加するときに上書き,追加をどうするか決める (たぶん上書きでOK)
- add_recordするときの方法
- 毎回データベースにデータを追加
- 毎回一時オブジェクトにデータを追加し,最後に1度だけデータベースにテーブルとして追加
- データベースの設計をtypingかSQLAlchemyのデータ型で定義
from abc import ABCMeta, abstractmethod import pandas as pd from sqlalchemy import create_engine class Database(metaclass=ABCMeta): def __init__(self, database_name: str): """ データベースの初期化 """ @abstractmethod def set_table(self, table_name: str, table: pd.DataFrame) -> bool: """ データベースにテーブルを追加 """ pass def get_table(self, table_name: str) -> pd.DataFrame: """ データベースからテーブルを取得 """ pass @abstractmethod def add_record(self, table_name: str, record: Any) -> bool: """ テーブルにデータを追加 """ pass