1

我有一个 Sybase 表,使用 sqlalchemy 进行声明式映射,如下所示:

from   sqlalchemy.ext.declarative import declarative_base    
Base = declarative_base()

class Appointment(base):
    __tablename__ = 'APPOINTMENT'
    __table_args__ = {'quote':False}

    dt = Column(Date, name='dt_appointment')

如何查询此表,按年份(dt_appointment)排序?Year() 是有效的 sybase T-SQL 函数。我试过包括一个计算列,例如:

dtYear = Column(Integer, name='Year(dt_appointment)', quote=False)

这不适用于查询:

session.Query(Appointment).order_by(Appointment.dtYear)
4

1 回答 1

5

您应该能够使用函数表达式

from sqlalchemy.sql import func
qry = session.query(Appointment).order_by(func.DATE(Appointment.dt))

但是请注意,如果您经常使用这些类型的过滤器,建议在您的表中创建一个计算列,该列将只包含一个year值并在此列上dt_appointment创建一个。index这将大大提高您的查询/过滤器的速度。[我不了解 Sybase,所以我假设在 Sybase 中可以创建computed persistent列,就像在 中一样MSSQL]。

于 2012-05-17T16:07:22.450 回答