小编N J*_*N J的帖子

SQLAlchemy使用SQLite丢失时区信息

我遇到一个问题,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)

python database sqlite datetime sqlalchemy

5
推荐指数
1
解决办法
2321
查看次数

标签 统计

database ×1

datetime ×1

python ×1

sqlalchemy ×1

sqlite ×1