当呈现模板时,如何引用sqlalchemy中的自定义字段?

2024-09-20 17:39:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打印功能计数()调用,但一旦进入mako模板,我就很难弄清楚它是如何命名的。我试图在调试器行对变量进行pprint和dict,但是它们作为对象返回,所以我不确定从这里开始该怎么做。在

下面是我正在执行的视图的代码:


    TodayList = DBSession.query(
    func.count(ExtendedCDR.uniqueid),ExtendedCDR,ExtensionMap)
    .filter(or_(
         ExtensionMap.exten == ExtendedCDR.extension,
         ExtensionMap.prev_exten == ExtendedCDR.extension))
    .filter(ExtendedCDR.start > func.curdate())
    .group_by(ExtendedCDR.extension)
    .order_by(func.count(ExtendedCDR.uniqueid).desc())
    .all()

运行此代码时,sql查询的调试返回:

2012-11-09 19:16:10,392 INFO [sqlalchemy.engine.base.Engine][Dummy-3] SELECT count(cdr_extended.uniqueid) AS count_1, cdr_extended.uniqueid AS cdr_extended_uniqueid, cdr_extended.start AS cdr_extended_start, cdr_extended.end AS cdr_extended_end, cdr_extended.clid AS cdr_extended_clid, cdr_extended.src AS cdr_extended_src, cdr_extended.dst AS cdr_extended_dst, cdr_extended.dcontext AS cdr_extended_dcontext, cdr_extended.channel AS cdr_extended_channel, cdr_extended.dstchannel AS cdr_extended_dstchannel, cdr_extended.lastapp AS cdr_extended_lastapp, cdr_extended.lastdata AS cdr_extended_lastdata, cdr_extended.duration AS cdr_extended_duration, cdr_extended.billsec AS cdr_extended_billsec, cdr_extended.disposition AS cdr_extended_disposition, cdr_extended.amaflags AS cdr_extended_amaflags, cdr_extended.accountcode AS cdr_extended_accountcode, cdr_extended.userfield AS cdr_extended_userfield, cdr_extended.extension AS cdr_extended_extension, concat(concat(ext_map.FName,%s),扩展映射。LName)作为一个非u 1,ext_地图扩展作为ext-map-exten,ext-map.FName作为ext_map_FName,ext{}作为ext_map_LName,ext_地图登录名作为ext_map登录名,ext_map.isManager作为ext_map_isManager,ext_地图上一个扩展作为扩展地图 从cdr_extended,ext_映射 WHERE(分机_地图扩展=cdr_扩展.扩展或ext_地图上一个扩展=cdr_扩展.扩展)和cdr_扩展.启动>;curdate()按cdr分组_扩展.扩展按计数排序(cdr_扩展的.uniqueid)说明

下面是我的mako模板代码:

^{pr2}$

但是,Mako抛出了一个例外${topentry.count_1个}不存在,尽管可以假设它会给出上面的调试输出。在

有没有人知道我该如何根据python/Mako找到count_1的名称?在


Tags: 代码extendedmapascountextension地图start
2条回答

{{count不是你的对象的一部分。您需要了解SQLAlchemy对该值的真正作用。在

您应该能够使用.label()命名查询的返回值。例如,DBSession.query(func.count(ExtendedCDR.unique_id).label('count'), ...)。在

相关问题 更多 >

    热门问题