flask sql alchemy查询为数据库中存在的数据返回null原因是什么

eagi6jfj  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(323)

我的python程序是用来查询mysql数据库中的记录的。该记录存在于数据库中,包含数据,但程序返回空值。被查询的表名为market。在该表中,有一列标题为“市值”和一列标题为“成交量”。使用mysqlworkbench查询数据库时,结果显示列中有数据。但是,程序接收空值。
附件是两张图片(链接,因为我需要赢得10个信誉点嵌入图片在一个职位):
mysql数据库列映像
显示数据库中有问题的列的视图。从图像中,您可以看到我需要的数据存在于我的数据库中。
带有pycharm调试器结果的代码
在运行调试器之前,我在代码向数据库查询对象的行后面设置了一个断点。图2显示了代码查询数据库时收到的输出。
市场模式截图
我发现在将市值(market\u cap)添加到字典(price\u map)之前转换市值(market\u cap)会返回正确的值。你可以在138行看到。
什么会导致记录中的现有数据返回为null?

import logging
from flask_restful import Resource
from api.resources.util.date_util import pretty_date_to_epoch, 
epoch_to_pretty_date
from common.decorators import log_exception
from db.models import db, Market
log = logging.getLogger(__name__)

def map_date_to_price():
    buy_date_list = ["2015-01-01", "2015-02-01", "2015-03-01"]
    sell_date_list = ["2014-12-19", "2014-01-10", "2015-01-20",
                      "2016-01-10"]
    date_list = buy_date_list + sell_date_list    
    market_list = []
    price_map = {}
    for day in date_list:
        market_list.append(db.session.query(Market).
        filter(Market.pretty_date == day).first())
    for market in market_list:
        price_map[market.pretty_date] = market.market_cap

    return price_map
d8tt03nd

d8tt03nd1#

被检索为null的两个字段都是空的 db.Numeric . http://docs.sqlalchemy.org/en/latest/core/type_basics.html 请注意,默认情况下,这些都由 decimal.Decimal 对象,我敢打赌它不能转换为json,那么返回的形式是什么呢 Market.__repr__() 将显示为 null .
我会尝试添加 asdecimal=False 对这两个 db.Numeric() 来电 Market .

相关问题