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

Tすべてのをセッションにロードせずに、関数を使用して4月以外のオブジェクトをすぐにフィルタリングできます。

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 に答える