我遇到一个问题,SQLAlchemy(版本0.6.4和0.6.8)datetime在使用SQLAlchemy DateTime类定义的列提交到SQLite数据库时丢失了来自对象的时区信息.(我意识到SQLAlchemy正在将其转换为字符串并返回,这是我认为是问题的一半).
由于代码比单词更响亮,我有以下示例/再现:
import datetime, pytz, sqlalchemy
from sqlalchemy import create_engine, Column, Integer, DateTime
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///:memory:', echo=True)
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
class Example(Base):
__tablename__ = "example"
id = Column(Integer, primary_key=True)
date = Column(DateTime(timezone=True))
def __init__(self, date):
self.date = date
Base.metadata.create_all(engine)
aucklandtz = pytz.timezone('Pacific/Auckland')
exdatetime = datetime.datetime(2011,8,8,2,23)
print aucklandtz, exdatetime
# inject TZ to exdatetime:
injdatetime = aucklandtz.localize(exdatetime)
print injdatetime
newrecord = Example(injdatetime)
print …Run Code Online (Sandbox Code Playgroud)