Python SQLAlchemyの使い方のサンプル

環境
Windows 11 Pro 64bit
Python 3.11

概要
SQLAlchemyを利用して、基本的なORM操作(INSERT, SELECT, UPDATE, DELETE)を確認します。

ファイル構成

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
.
└── sql
├── main.py # ORM操作をします。
├── models
│ └── user.py # userテーブルの定義をします。
└── setting
└── setting.py # Engineインスタンス, session生成など行います。
. └── sql ├── main.py # ORM操作をします。 ├── models │ └── user.py # userテーブルの定義をします。 └── setting └── setting.py # Engineインスタンス, session生成など行います。
.
└── sql
    ├── main.py          # ORM操作をします。
    ├── models
    │   └── user.py      # userテーブルの定義をします。
    └── setting
        └── setting.py   # Engineインスタンス, session生成など行います。

操作方法
1.パッケージインストール
DBにmysqlを利用するので、ドライバとして mysqlclient をインストールします。
pipenv install sqlalchemy
pipenv install mysqlclient

2.DB接続に必要な設定を行います。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
dialect = "mysql"
driver = "mysqldb"
username = "root"
password = "pwd11"
host = "192.168.11.22"
port = "3306"
database = "test_db"
charset_type = "utf8"
db_url = f"{dialect}+{driver}://{username}:{password}@{host}:{port}/{database}?charset={charset_type}"
# DB接続するためのEngineインスタンス
ENGINE = create_engine(db_url, echo=True)
# DBに対してORM操作するときに利用
# Sessionを通じて操作を行う
session = scoped_session(
sessionmaker(autocommit=False, autoflush=False, bind=ENGINE)
)
# 各modelで利用
# classとDBをMapping
Base = declarative_base()
from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base dialect = "mysql" driver = "mysqldb" username = "root" password = "pwd11" host = "192.168.11.22" port = "3306" database = "test_db" charset_type = "utf8" db_url = f"{dialect}+{driver}://{username}:{password}@{host}:{port}/{database}?charset={charset_type}" # DB接続するためのEngineインスタンス ENGINE = create_engine(db_url, echo=True) # DBに対してORM操作するときに利用 # Sessionを通じて操作を行う session = scoped_session( sessionmaker(autocommit=False, autoflush=False, bind=ENGINE) ) # 各modelで利用 # classとDBをMapping Base = declarative_base()
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base

dialect = "mysql"
driver = "mysqldb"
username = "root"
password = "pwd11"
host = "192.168.11.22"
port = "3306"
database = "test_db"
charset_type = "utf8"
db_url = f"{dialect}+{driver}://{username}:{password}@{host}:{port}/{database}?charset={charset_type}"

# DB接続するためのEngineインスタンス
ENGINE = create_engine(db_url, echo=True)

# DBに対してORM操作するときに利用
# Sessionを通じて操作を行う
session = scoped_session(
    sessionmaker(autocommit=False, autoflush=False, bind=ENGINE)
)

# 各modelで利用
# classとDBをMapping
Base = declarative_base()

 

IT

Posted by arkgame