2012-04-27 6 views
1

月でrecorsd選択SQLAlchemyの私はMySQLでのテーブルがある場合のMySQL

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月の月からのレコードたい場合

答えて

4

を、1は、直離れた非四月オブジェクトをフィルタリングするFunctionsを使用することができます。

from sqlalchemy.sql import func 
qry = session.query(T).filter(func.MONTH(T.time) == 4) 
for t in qry: 
    print t.value 
+1

これはすべてのデータベースで機能しますか?私はpostgresqlが月スカラーをサポートしているとは思わない。私はfuncがここでは正しい考えだと思うが、 'func.date_part( 'month'、T.time)'はそれについてのより良い方法だと思う。 – JosefAssad

+0

そうです、これはRDBMS固有のものです。質問には「mysql」というタグが付けられているので、サンプルコードはそこで動作するようなものでした。 – van

2

:セッションにすべてのT Sをロードせず

for t in session.query(T): 
    if t.time.month == 4: print t.value 
3

非常に古い質問が、より良い答えはここにある:

from sqlalchemy import extract 

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

これは、7月にすべてのレコードをデータベースに戻します。

関連する問題