7
votes

Comment obtenir tous les objets avec une date qui tombe dans un mois spécifique Sqlalchemy

J'ai un modèle SQLalchemy simple:

class Event(Base):
    """ The SQLAlchemy declarative model class for a Event object. """
    __tablename__ = 'events'
    id = Column(Integer, primary_key=True)
    date = Column(DateTime)
    title = Column(Text)


1 commentaires

Avez-vous besoin de filtrer les événements d'un mois spécifique (exemple: juin 2012, auquel cas @ de la réponse de Tony est bon) ou les événements de juin indépendamment de l'année?


3 Réponses :


9
votes

Cela devrait trouver tous les événements de juin 2012.

import datetime
import calendar

year = 2012
month = 6

num_days = calendar.monthrange(year, month)[1]
start_date = datetime.date(year, month, 1)
end_date = datetime.date(year, month, num_days)

results = session.query(Event).filter(
    and_(Event.date >= start_date, Event.date <= end_date)).all()


0 commentaires

17
votes

Une très ancienne question mais une meilleure réponse est ici: xxx

Ceci renvoie tous les enregistrements dans des événements de base de données en juillet.


1 commentaires

Et si vous voulez extraire le mois et l'année?



9
votes

Je me demandais la même chose que Brady Huang se demandait. Donc, pour développer l'excellente réponse de @ scottydelta: Vous pouvez simplement empiler les filtres les uns sur les autres. Donc, si vous souhaitez extraire chaque événement de juillet 2018, vous devez utiliser

from sqlalchemy import extract  

session.query(Event).filter(extract('year', Event.date)==2018).filter(extract('month', Event.date)==7).all()


0 commentaires