2010-06-15 35 views
6

Bu nedenle, bir tarih damgası ve son ay içinde benzersiz olduklarından emin olmak istediğim iki alan içeren bir tablom var.SQLAlchemy: İki alana göre gruplandırma ve tarihe göre filtreleme

table.id 
table.datestamp 
table.field1 
table.field2 

Geçen ay aynı alan1 + 2 bileşik değeriyle çift kayıt olmamalıdır. Kafamda

adımlar şunlardır:

  1. Grubu iki alanlara göre
  2. bu eşsiz gruplama oluşmaz emin olmak için geçen ayki veriler üzerinde geri bak.

Buraya kadar var, ama bu çalıştığını sanmıyorum:

result = session.query(table).group_by(\ 
    table.field1, 
    table.field2, 
    func.month(table.timestamp)) 

Ama sqlalchemy içinde bunu nasıl emin değilim. Birisi bana tavsiyede bulunabilir mi?

Çok teşekkürler!

+0

Teşekkür çocuklar – 0atman

cevap

15

doğru yönde işaret etmelidir ardından da satır içi yorumları görmek: ancak çözüm benim sqlalchemy bilgi delikler dürter, önceden

qry = (session.query(
       table.c.field1, 
       table.c.field2, 
       # #strftime* for year-month works on sqlite; 
       # @todo: find proper function for mysql (as in the question) 
       # Also it is not clear if only MONTH part is enough, so that 
       # May-2001 and May-2009 can be joined, or YEAR-MONTH must be used 
       func.strftime('%Y-%m', table.c.datestamp), 
       func.count(), 
       ) 
     # optionally check only last 2 month data (could have partial months) 
     .filter(table.c.datestamp < datetime.date.today() - datetime.timedelta(60)) 
     .group_by(
       table.c.field1, 
       table.c.field2, 
       func.strftime('%Y-%m', table.c.datestamp), 
       ) 
     # comment this line out to see all the groups 
     .having(func.count()>1) 
    ) 
+0

Çok teşekkürler kamyonet, önemi nedir Tablo nesnesinin 'c' özniteliği? – 0atman

+0

, "table" nesnesine sahipseniz, "c", "sütunlar" kısayoludur. Bkz. SQL İfade Dili Eğitimi: http://www.sqlalchemy.org/docs/sqlexpression.html?highlight=group_by#ordering-grouping-limiting-offset-ing – van

+0

Endişelenme, sorumu sadece googledmeliydim. sık sık durum böyle! – 0atman

İlgili konular