代码之家  ›  专栏  ›  技术社区  ›  Ishan Khare

Sqlalchemy查询返回十进制对象

  •  0
  • Ishan Khare  · 技术社区  · 8 年前

    我有以下型号:

      172  class ReportRecord(db.Model):                                                                                                                                                                                
      173     __tablename__ = 'tb_report_record'                                                                                                                                                                         174                                                                                                                                                                                                                175     id = db.Column(Integer, primary_key=True)                                                                                                                                                                
      176     report_id = db.Column(ForeignKey('tb_rua_report.id'), index=True)                                                                                                                                        
      177     source_ip = db.Column(String(100, 'utf8_bin'))                                                                                                                                                           
      178     count = db.Column(Integer)                                                                                                                                                                               
      179     disposition = db.Column(String(10, 'utf8_bin'))                                                                                                                                                          
      180     header_from = db.Column(String(100, 'utf8_bin'))                                                                                                                                                         
      181     spf_domain = db.Column(String(100, 'utf8_bin'))                                                                                                                                                          
      182     spf_result = db.Column(String(10, 'utf8_bin'))                                                                                                                                                           
      183     dkim_domain = db.Column(String(100, 'utf8_bin'))                                                                                                                                                         
      184     dkim_result = db.Column(String(10, 'utf8_bin'))                                                                                                                                                          
      185     isActive = db.Column(Integer, nullable=False, server_default=text("'1'"))                                                                                                                                  186     created_by = db.Column(String(100), nullable=False, server_default=text("'System'"))                                                                                                                     
      187     created_dt = db.Column(DateTime, nullable=False)                                                                                                                                                         
      188     last_modified_by = db.Column(String(100), nullable=False, server_default=text("'System'"))                                                                                                               
      189     last_modified_dt = db.Column(DateTime, server_default=text("CURRENT_TIMESTAMP"))                                                                                                                         
      190                                                                                                                                                                                                              
      191     report = db.relationship('RuaReport', backref=db.backref("record"))
    

    flasksqlalchemy

    ReportRecord.query.filter(or_(ReportRecord.spf_result=="pass", ReportRecord.dkim_result=="pass")).with_entities(func.sum(ReportRecord.count).label('total_passed')).all()
    

    我得到以下输出:

    [(Decimal('930'),)]

    现在我得到的值是正确的,但我不能 jsonify int(Decimal('930')) 是否提供了所需的结果,但将此数据转换为正确格式的默认方法是什么?

    2 回复  |  直到 8 年前
        1
  •  6
  •   Eric O.    7 年前

    这对我很有用: 在您的导入中包括以下内容:

    from sqlalchemy import func
    

    total_passed = db.session.query(func.sum(ReportRecord.count)).scalar()
    

    这是回报 930 而不是 [(十进制('930'),)]

    阅读更多关于 .scalar()

        2
  •  3
  •   mad_    8 年前

    在查询小数点时转换小数点怎么样?

    尝试 int(func.sum(ReportRecord.count).label('total_passed'))

    我无法检查,但有一个cast函数可能也很有用

    from sqlalchemy.sql.expression import cast
    cast(func.sum(ReportRecord.count).label('total_passed'),sqlalchemy.Integer)