レンタルサーバーのカラフルボックス(ColorfulBox)でPython仮想環境を作り、SQLAlchemyをインストールして使う

python

SQLAlchemyは、Pythonプログラムからデータベースを操作するための強力なライブラリです。MySQLやMariaDBなどデータベースに簡単にアクセスできます。ここではレンタルサーバーのカラフルボックスで使うための手順をメモしていきます。

目次

python仮想環境の準備

カラフルボックスは、レンタルサーバーの中でもpythonを使い始めるまでがGUIで簡単に準備できます。まずはpython仮想環境を作っておき、起動している事を確認します。

仮想環境のStatusがStarted(起動中)であることを確認しつつ、起動コマンドを取得します。

Editボタンを押します。

ターミナルで仮想環境を使うためのコマンドをコピーします。

python仮想環境の有効化

2つのコマンドが「&&」でつながっていますが、以下の例では2行に分けて実行しています。(そのままコピペでも勿論OK)

[myserver@tky006 ~]

#python仮想環境を有効化(アクティベート)する
$ source/home/myserver/virtualenv/py31013dev01/3.10/bin/activate

#python仮想環境のアプリケーションディレクトリに移動
$ cd/home/myserver/py31013dev01

先にpython仮想環境内にインストールされているpipを更新しておきましょう。
pipとはPython のパッケージ管理システムです。Pythonのソフトウェアは「パッケージ」という形で配布されていますが、これらのパッケージの取得・更新・削除に使うツールです。SQLALchemyもpipコマンドでインストールします。

((py31013dev01:3.10)) [myserver@tky006 py31013dev01]
$ pip install --upgrade pip


#pipがアップグレードされる
Requirement already satisfied: 
pip in /home/myserver/virtualenv/py31013dev01/3.10/lib/python3.10/site-packages (23.1)
Collecting pip Downloading pip-24.2-py3-none-any.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 74.4 MB/s eta 0:00:00
 Installing collected packages:
 pip Attempting uninstall: pip
 Found existing installation: pip 23.1
 Uninstalling pip-23.1:
 Successfully uninstalled pip-23.1

Successfully installed pip-24.2

SQLAlchemyのインストール

同じ要領で pipコマンドでsqlalchemyをインストールしましょう。

((py31013dev01:3.10)) [myserver@tky006 py31013dev01]
$ pip install sqlalchemy

#sqlalchemyがインストールされる
Collecting sqlalchemy
Downloading SQLAlchemy-2.0.32-cp310-cp310 manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1/3.1 MB 62.6 MB/s eta 
 Collecting typing-extensions>=4.6.0 (from sqlalchemy)
 Downloading typing_extensions-4.12.2-py3-none-any.whl (37 kB)
 Collecting greenlet!=0.4.17 (from sqlalchemy)
 Downloading greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (662 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 662.7/662.7 kB 88.7 MB/s eta 
Installing collected packages: typing-extensions, greenlet, sqlalchemy

Successfully installed greenlet-3.0.3 sqlalchemy-2.0.32 typing-extensions-4.12.2

MySQLドライバのインストール

これだけでは動きません。一緒にMySQLなどのデータベースに接続するために必要なドライバも合わせてインストールします。ここでは mysql-connector-python を選択しています。

$ pip install mysql-connector-python

これでSQLALchemyが使えるようになります。

ちなみに、他のMySQLドライバ(例: pymysql や mysqlclient)を使いたい場合は、そのドライバをインストールし、接続文字列を適切に変更します。

#pymysqlを使う場合
$ pip install pymysql

# pymysqlを使うpythonコード上の接続エンジン記述
- connection_string = f'mysql+pymysql://{username}:{password}@{host}/{database_name}'



# mysqlclientを使う場合
$ pip install mysqlclient

# mysqlclientを使う pythonコード上の接続エンジン記述
- connection_string = f'mysql+mysqldb://{username}:{password}@{host}/{database_name}'

SQLAlchemyの使い方

仮想環境を有効にした状態で、SQLAlchemyを使用するPythonスクリプトをします。
以下は【id、名前、年齢】だけの簡単なユーザーテーブルを作成し1行だけデータを入れるSQLAlchemyの使用例です。接続ドライバには【mysql-connector-python】を使用しています。

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# MySQLの接続情報
username = 'your_username'
password = 'your_password'
host = 'localhost'
database_name = 'your_database'

# 接続エンジン mysql-connector-python  の作成
connection_string = f'mysql+mysqlconnector://{username}:{password}@{host}/{database_name}'
engine = create_engine(connection_string)

# Baseクラスの作成
Base = declarative_base()

# モデルの定義
class User(Base):
    __tablename__ = 'users'
    
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

# テーブルの作成
Base.metadata.create_all(engine)

# セッションの作成
Session = sessionmaker(bind=engine)
session = Session()

# データの追加
new_user = User(name='山田太郎', age=30)
session.add(new_user)
session.commit()

# データのクエリ
users = session.query(User).all()
for user in users:
    print(user.name, user.age)

仮想環境の終了

以下のコマンドで仮想環境を無効化し、サーバーのデフォルトインストールされたPython環境に戻ります。

$ deactivate

参考:SQLAlchemyの主な特徴

1. データベース抽象化

SQLAlchemyは、データベースへのアクセスや操作を抽象化します。これにより、ユーザーは生のSQLを直接書かずに、Pythonコードを使ってデータベースとやり取りできます。SQLAlchemyは、さまざまなデータベース(MySQL、PostgreSQL、SQLite、Oracleなど)をサポートしており、異なるデータベース間での移植性が向上します。

2. ORM(Object-Relational Mapping)

SQLAlchemyの最も特徴的な機能の一つがORM機能です。ORMは、データベースのテーブルをPythonのクラスとして扱うことができる仕組みです。これにより、データベースのレコードをオブジェクトとして操作することができます。

3. Core(SQL Expression Language)

SQLAlchemyは、ORMを使用せずに直接SQLのようにデータベース操作を行うための低レベルのAPIも提供しています。この部分を「SQLAlchemy Core」と呼びます。Coreを使うと、PythonでSQL文を生成して実行することができます。

4. データベース接続の管理

SQLAlchemyは、データベース接続の管理も行います。エンジン(engine)というオブジェクトを使って、データベースとの接続を管理し、複数の接続を効率的に扱うことができます。

5. マイグレーション

SQLAlchemyは、データベーススキーマのバージョン管理をサポートしています。これにより、データベースの構造を変更する際に、コードでその変更を定義して適用することができます。マイグレーションツールとしては、Alembicがよく使われます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次