2

当我在 MySQL 中有一张表时:

create table t
(
    id integer primary key,
    time datetime not null,
    value integer not null
)

和一个映射类:

class T(Base):
    __tablename__ = 't'

    id = Column(INTEGER, primary_key=True, nullable=False, unique=True)
    time = Column(DATETIME, nullable=False)
    value = Column(INTEGER, nullable=False)

如何使用 SQLAlchemy 从该表中选择所有给定月份的值?MySQL 有month功能:select value from t where month(time) = 4 但 SQLAlchemy 没有month功能。

4

3 回答 3

4

无需将所有Ts 加载到会话中,就可以直接使用Functions过滤非 April 对象:

from sqlalchemy.sql import func
qry = session.query(T).filter(func.MONTH(T.time) == 4)
for t in qry:
    print t.value
于 2012-04-30T15:48:41.920 回答
3

一个非常古老但更好的答案在这里:

from sqlalchemy import extract  

session.query(T).filter(extract('month', T.time)==7).all()

这将在 7 月将所有记录返回到数据库中。

于 2015-07-26T20:16:58.370 回答
1

例如,如果您想要所有 4 月份的记录,而不考虑年份或日期:

for t in session.query(T):
    if t.time.month == 4: print t.value
于 2012-04-29T10:36:54.773 回答