2011-06-05 19 views
5

Kullanıcıların siparişleri (ordersCount) miktarına göre filtreleyen bir Kullanıcı sorgum var.sqlalchemy filter sayıcı sütununa göre

User.query.filter('ordersCount>2') 

bunu çalıştırırsanız şöyle der: "Bilinmeyen sütun 'ordersCount' in 'nerede maddesinin'" Ben mysql alanları için buna izin vermez çünkü bu tür operasyonlara sahip kullanarak olmalıdır Benim deneyim

tablonun parçası değil ama bunun yerine filtrenin sahip çalıştırırsanız, ben alıyorum:

(1054, "Unknown column 'ordersCount' in 'having clause'") 'SELECT count(1) AS count_1 \nFROM user \nHAVING ordersCount > 2'() 

Peki nasıl sqlalchemy bir sayım sütunu filtre uygulayabilirim?

cevap

11

Ordering, Grouping, Limiting, Offset...ing belgelerine bakın. Sağlanan örnek kod ve emir orders tabloda saklanır bir varsayım dayanarak, sürüm benzer görünecektir:

>>> s = select([orders.c.user_id, func.count(orders.c.id)]).\ 
...  group_by(orders.c.user_id).having(func.count(orders.c.id) > 2) 

Bu şekilde söz konusu kullanıcıların user_id 's alacak. User nesnelerini geri almak istiyorsanız, bir alt sorguyu s yapın ve söz konusu kullanımları almak için bu alt sorgu ile User sorgunuza katılın.