2022年7月31日日曜日

SQLAlchemy で既存のテーブルを操作する方法

SQLAlchemy で既存のテーブルを操作する方法

概要

テーブルなどは SQL コマンドで直接作っている場合にデータの操作を SQLAlchemy から行う方法を紹介します

環境

  • Python 3.10.2
  • sqlalchemy 1.4.39

サンプルコード

テーブルなどは作成しないでそのままモデルを生成して操作すれば良さそうです
カラムの型さえあっていれば良さそうで鍵の制約や NULL 情報はなくても大丈夫でした

リフレクションする方法もあるようですが単純なテーブルで 1 つだけ操作したい場合などはこれで十分かなと思います

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.schema import Column
from sqlalchemy.types import (Integer,
                              String,
                              DateTime)

engine = create_engine("mysql://user001:xxx@192.168.100.10/your_table_name?charset=utf8mb4")
SessionClass = sessionmaker(engine)
db_session = SessionClass()

Base = declarative_base()


class User(Base):

    __tablename__ = 'user'

    id = Column(String(32), primary_key=True)
    name = Column(String(8))
    age = Column(Integer)
    created_at = Column(DateTime)
    updated_at = Column(DateTime)

users = db_session.query(User).all()

ちなみに Ubuntu の場合は libmysqlclient-dev パッケージが必要になります

0 件のコメント:

コメントを投稿