目次
最近SQLAlchemyを使っていて、データベースに日付や日時を追加したいと思いました。
SQLAlchemyで日付や日時を追加する方法を調べてみたので、備忘録として残します。
SQLAlchemyで日付を追加する
SQLAlchemyで日付を追加する方法は非常にシンプルです。
以下に、具体的な例を使って説明します。
まず、SQLAlchemy ORMを使ってデータベーステーブルとそのモデルを定義します。
from sqlalchemy import create_engine, Column, Integer, String, Date, Sequence
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from datetime import date
# データベースエンジンの作成
engine = create_engine('sqlite:///:memory:')
# ベースの作成
Base = declarative_base()
# モデルの定義
class User(Base):
__tablename__ = 'users'
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
name = Column(String(50))
birthdate = Column(Date)
# テーブルの作成
Base.metadata.create_all(engine)
# セッションの作成
Session = sessionmaker(bind=engine)
session = Session()
# データの追加
new_user = User(name='John Doe', birthdate=date(1990, 5, 1))
session.add(new_user)
session.commit()
この例では以下の手順を踏みます。
create_engine
関数でデータベースエンジンを作成。Base
を宣言してベースクラスを作成。- データベースのテーブルスキーマを定義する
User
クラスを宣言。 Base.metadata.create_all(engine)
でテーブルを作成。sessionmaker
を使ってセッションを作成。- 新しい
User
オブジェクトを作成して日付を含める。 - セッションに新しい
User
オブジェクトを追加してコミット。
この例で見られるように、日付を追加する際には標準のdatetime.date
オブジェクトを使用しています。
この方法を使えば、SQLAlchemyを使って簡単に日付データをデータベースに追加することができます。
SQLAlchemyで日時を追加する
時間も一緒に追加できます。その場合は、DateTime
型を使います。以下に、時間を含むDateTime
を使った完全な例を示します。
from sqlalchemy import create_engine, Column, Integer, String, DateTime, Sequence
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from datetime import datetime
# データベースエンジンの作成
engine = create_engine('sqlite:///:memory:')
# ベースの作成
Base = declarative_base()
# モデルの定義
class User(Base):
__tablename__ = 'users'
id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
name = Column(String(50))
created_at = Column(DateTime)
# テーブルの作成
Base.metadata.create_all(engine)
# セッションの作成
Session = sessionmaker(bind=engine)
session = Session()
# データの追加
new_user = User(name='John Doe', created_at=datetime(2023, 10, 10, 15, 30, 45))
session.add(new_user)
session.commit()
この例では以下の手順を踏みます:
DateTime
型のカラムを持つテーブルを定義 (created_at
)。datetime
モジュールを使って現在の日付と時刻を取得。datetime
オブジェクトを使ってデータを追加。
このように、DateTime
型とdatetime
モジュールを使うことで、日付と時間を一緒にデータベースに保存することができます。