Pythonで日付処理をマスター:SQLAlchemyを使った実践的な方法
SQLAlchemy: 文字列を日付型に変換し、適切な書式にする方法
このチュートリアルでは、SQLAlchemyを使って文字列を日付型に変換し、適切な書式にする方法を解説します。
前提条件
- Python 3.x
- SQLAlchemy 1.4+
手順
- 必要なライブラリをインポートします。
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
Person
という名前のエンティティクラスを作成します。このエンティティクラスは、id
、name
、birthdate
という属性を持つものとします。
class Person(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
name = Column(String)
birthdate = Column(Date)
sessionmaker
オブジェクトを作成します。このオブジェクトは、データベースとの接続を作成するために使用されます。
session = sessionmaker()()
- 文字列の日付を
Person
エンティティのbirthdate
属性に設定します。
person = Person(name='John Doe')
person.birthdate = '2023-01-01'
session.add(person)
session.commit()
person = session.query(Person).filter(Person.name=='John Doe').first()
birthdate = person.birthdate
print(birthdate)
出力:
2023-01-01
日付書式の変更
デフォルトでは、Date
型の日付はYYYY-MM-DD形式で出力されます。書式を変更するには、strftime()
関数を使用できます。
birthdate = person.birthdate.strftime('%d/%m/%Y')
print(birthdate)
01/01/2023
その他の書式オプション
%a
: 曜日名(短縮形)%d
: 日付%m
: 月%Y
: 年
SQLAlchemyを使って文字列を日付型に変換し、適切な書式にする方法はいくつかあります。このチュートリアルでは、最も一般的な方法を紹介しました。
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Person(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
name = Column(String)
birthdate = Column(Date)
session = sessionmaker()()
# 文字列の日付を`Person`エンティティの`birthdate`属性に設定
person = Person(name='John Doe')
person.birthdate = '2023-01-01'
# データベースに追加
session.add(person)
# コミット
session.commit()
# `Person`エンティティの`birthdate`属性を取得
person = session.query(Person).filter(Person.name=='John Doe').first()
# デフォルトの書式
birthdate = person.birthdate
# 書式を変更
birthdate = person.birthdate.strftime('%d/%m/%Y')
# 出力
print(birthdate)
01/01/2023
説明
Person
エンティティをデータベースに追加します。- デフォルトの書式と変更した書式で日付を出力します。
変更
- 必要に応じて、エンティティクラスの名前、属性名、テーブル名などを変更できます。
- 書式オプションを変更して、日付の書式をカスタマイズできます。
SQLAlchemyで文字列を日付型に変換するその他の方法
from datetime import datetime
birthdate_str = '2023-01-01'
birthdate = datetime.strptime(birthdate_str, '%Y-%m-%d')
print(birthdate)
datetime.date(2023, 1, 1)
dateutilモジュールを使用する
from dateutil import parser
birthdate_str = '2023-01-01'
birthdate = parser.parse(birthdate_str)
print(birthdate)
datetime.date(2023, 1, 1)
SQLAlchemyのfuncモジュールを使用する
from sqlalchemy import Column, Date, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import func
Base = declarative_base()
class Person(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
name = Column(String)
birthdate = Column(Date)
session = sessionmaker()()
# 文字列の日付を`Person`エンティティの`birthdate`属性に設定
person = Person(name='John Doe')
person.birthdate = func.to_date('2023-01-01')
# データベースに追加
session.add(person)
# コミット
session.commit()
# `Person`エンティティの`birthdate`属性を取得
person = session.query(Person).filter(Person.name=='John Doe').first()
# 出力
print(person.birthdate)
2023-01-01
上記の方法はいずれも、SQLAlchemyで文字列を日付型に変換するために使用できます。どの方法を使用するかは、開発者の好みや要件によって異なります。
sqlalchemy