この記事では、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)を使用する方法について詳しく解説しました。データベースの基本操作から応用例まで、幅広い内容を網羅していますので、ぜひ参考にしてください。
コメント