Ich habe Daten aus einer Datenbank abgefragt. Es gibt ein Feld mit der Funktion sum (), das ich nicht anzeigen kann.
Ich habe den Schlüssel entsprechend dem Diktat geändert, aber es funktioniert immer noch nicht. Wenn ich nur das Diktat drucke, zeigt es mir dies.
<Row {'indata': {'nation': '\xe0\xb8\x88\xe0\xb8\xb5\xe0\xb8\x99'}, '_extra': {'SUM(`indata`.`quan`)': 14635.0}}>
Wenn ich also auf item.indata.nation zugreifen könnte, um zu \ xe0 \ xb8 \ x88 \ xe0 \ xb8 \ xb5 \ xe0 \ xb8 \ x99 zu gelangen, sollte ich von 14635.0 aus zugreifen können
item._extra.SUM ( indata
. quan
), aber es funktioniert nicht
Hier ist der Controller:
def byNation():
indata = db((db.indata.date>=request.args[0])&
(db.indata.date<=request.args[1])&(db.indata.quan!=0)
).select(db.indata.nation,db.indata.quan.sum(),
groupby=db.indata.nation,orderby=~db.indata.quan.sum())
outdata = db((db.outdata.date>=request.args[0])&
(db.outdata.date<=request.args[1])&(db.outdata.quan!=0)
).select(db.outdata.nation,db.outdata.quan.sum(),
groupby=db.outdata.nation,orderby=~db.outdata.quan.sum())
return locals()
Hier ist die Ansicht:
{{for item in indata:}}
{{=item.indata.nation}}#This line doing fine
{{=item._extra.SUM(`indata`.`quan`)}}#This line not how could I access it ??
{{pass}}
Es verursacht eine ungültige Syntax bei:
response.write(item._extra.SUM(`indata`.quan`))
Das sollte nicht passieren.
Es ist nicht erforderlich, explizit auf den ._extra
Schlüssel zuzugreifen. Stattdessen können Sie einfach Folgendes tun:
item['SUM(`indata`.`quan`)']
Der obige Schlüssel kann jedoch spezifisch für die bestimmte verwendete Datenbank sein (es ist einfach der genaue Abfrageausdruck, der von der Datenbank zur Berechnung der Summe verwendet wird). Verwenden Sie daher besser die in der Dokumentation empfohlene Methode:
def byNation():
indata_sum = db.indata.quan.sum()
indata = db((db.indata.date>=request.args[0])&
(db.indata.date<=request.args[1])&(db.indata.quan!=0)
).select(db.indata.nation,indata_sum,
groupby=db.indata.nation,orderby=~indata_sum)
...
return locals()
Dann in der Ansicht:
{{=item[indata_sum]}}
Siehe http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#sum-avg-min-max-and-len (und hier ein wenig mehr zu Implementierungsdetails).
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen