PythonとSQLite、ORM(SQLAlchemy)で効率的なデータ管理を実現する方法

この記事では、PythonでSQLiteデータベースとORM(オブジェクト関係マッピング)ライブラリであるSQLAlchemyを使用してデータ管理を行う方法について解説します。初心者から中級者まで、具体的なコード例とその詳細な解説、そして実用的な応用例を2つ以上含めています。

目次

SQLiteとORM(SQLAlchemy)の基本

SQLiteは軽量なリレーショナルデータベースです。Pythonには標準ライブラリとしてSQLiteが組み込まれているため、簡単に利用できます。一方、ORM(Object-Relational Mapping)は、オブジェクト指向プログラミングとリレーショナルデータベースを橋渡しする技術です。PythonのORMライブラリで最もよく使用されるのはSQLAlchemyです。

SQLiteのセットアップ

Python標準ライブラリのsqlite3を使ってSQLiteをセットアップする基本的なコードは以下です。

import sqlite3

# データベースに接続
conn = sqlite3.connect("example.db")

# カーソルオブジェクトを作成
c = conn.cursor()

# テーブルを作成
c.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)''')

# データベースへの変更をコミット
conn.commit()

# 接続を閉じる
conn.close()

SQLAlchemyのセットアップ

SQLAlchemyをセットアップする基本的なコードは以下です。

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)

engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

PythonでSQLiteとSQLAlchemyを連携する方法

PythonでSQLiteとSQLAlchemyを連携させる具体的な方法について解説します。

データの追加

データを追加する基本的なコードは以下です。

# SQLite
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute("INSERT INTO users (name) VALUES ('Alice')")
conn.commit()
conn.close()

# SQLAlchemy
new_user = User(name='Bob')
session.add(new_user)
session.commit()

データの検索

データを検索する基本的なコードは以下です。

# SQLite
conn = sqlite3.connect("example.db")
c = conn.cursor()
c.execute("SELECT * FROM users WHERE name='Alice'")
print(c.fetchall())
conn.close()

# SQLAlchemy
for user in session.query(User).filter(User.name == 'Bob'):
    print(user.id, user.name)

応用例

複数のテーブルを連携させる

複数のテーブルを連携させる場合のコードとその解説です。

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class Address(Base):
    __tablename__ = 'addresses'
    
    id = Column(Integer, primary_key=True)
    email = Column(String)
    user_id = Column(Integer, ForeignKey('users.id'))
    
    user = relationship("User")
    
new_address = Address(email='alice@example.com', user=new_user)
session.add(new_address)
session.commit()

トランザクションの利用

トランザクションを利用する場合のコードとその解説です。

# トランザクション開始
session.begin()

try:
    new_user2 = User(name='Charlie')
    session.add(new_user2)
    session.commit()
except:
    session.rollback()

まとめ

この記事では、PythonでSQLiteとORM(SQLAlchemy)を使用する方法について詳しく解説しました。データベースの基本操作から応用例まで、幅広い内容を網羅していますので、ぜひ参考にしてください。

コメント

コメントする

目次