sqlachemy的日期类型是传递时区

时间:2016-04-05 16:28:10

标签: python sqlalchemy

我有以下内容:

class Atom(Base):
    __tablename__ = 'atom'

    id                = Column( Integer, primary_key=True)
    date              = Column( Date, nullable=False,  doc="date on which delivery occurred" )`

我查看发送的sql,我看到以下日期 'date':datetime.datetime(2016, 3, 1, 0, 0, tzinfo=tzutc())

所以当我通过2016-03-01并查看db时,我会看到2016-02-29

如何阻止sqlachemy为日期类型添加tzinfo?

1 个答案:

答案 0 :(得分:0)

解决方案是:

date = Column(DateTime(timezone=False),
              nullable=False,
              doc="date on which delivery occurred"
       )

根据SQLAlchemy Changelog,你可以用这种方式切换时区:

  

将“timezone = True”标志添加到DateTime和Time类型。 postgres到目前为止   将它转换为“TIME [STAMP](WITH | WITHOUT)TIME ZONE”,这样   控制时区存在更可控(psycopg2返回   使用tzinfo的日期时间(如果可用),这可能会造成混淆   反对没有的日期时间。

另一种选择是设置特定时区,解释为here