2016-04-06 16 views
0
#app adset 
app_list = db.session.query(
    AdsetAppReport.adset_id.label("adset_id"), 
    func.sum(AdsetAppReport.spend).label("spends"), 
    ).group_by(AdsetAppReport.adset_id) 

#web adset 
web_list = db.session.query(
    AdsetReport.adset_id.label("adset_id"), 
    func.sum(AdsetReport.spend).label("spends"), 
    ).group_by(AdsetReport.adset_id) 

#union two tables 
both_list = app_list.union(web_list) 

#Query 
adset_list = db.session.query(
    Adset.adset_id, 
    Adset.user_os, 
    both_list.spends, 
    ).filter(both_list.adset_id == Adset.adset_id) \ 
    .all() 

İki tabloyu her iki_list olarak birleştirmek ve sonra adset iç birleştirmesini geçici tabloda yapmak istiyorum. Kodu çalıştırdığımda , ancak bana AttributeError göster. AttributeError: both_list 'Query' nesnesinin 'spends' özelliği yokturpython sqlalchemy birleşimi sorgusu , 'Sorgu' nesnesinin 'spends' özelliği yoktur

+0

Tablolarınızın yapısı nedir? Sorguyu azaltmak kesinlikle yardımcı olur. Ayrıca, "app_list" ve "web_list" aynıdır. – API

+0

app_list adsetAppReport tablosudur, web_list tablosu AdsetReport, aynı değildir, iki tablonun yapısı benzerliktir. Sorguyu azalttım, teşekkürler. – shenyang

cevap

0

Bunun işe yarayıp yaramadığını kontrol edemedim, ancak bir alt sorgu oluşturmak onu çözebilir. Üstelik katılımı açık bir şekilde yaptım.

#union two tables 
both_list = app_list.union(web_list).subquery() 

#Query 
adset_list = db.session.query(
     Adset.adset_id, 
     Adset.user_os, 
     both_list.c.spends, 
    ).\ 
    join(both_list, both_list.c.adset_id == Adset.adset_id).\ 
    all() 
+0

Yardımlarınız için şimdiden teşekkür ederim, ancak şu hatayı alıyorum: 'Alias' nesnesinin 'harcanıyor' özelliği yok – shenyang

+0

'c', 'both_list.c.spends' ve 'both_list.c.adset_id' içeriyor mu? (Hangi sütunlar için duruyor) – API

+0

nice.it'in size çok teşekkür ederim. – shenyang