【问题标题】:pymongo query not returning anything in flaskpymongo 查询未在烧瓶中返回任何内容
【发布时间】:2021-06-03 21:59:39
【问题描述】:

所以我有 api.py (flask restplus api),我有代码来查询我的数据库并返回结果。当我打印结果时它是空的,我不知道为什么。查询代码在另一个不是基于 api 的文件中工作,所以我推测它与 api 有关。有什么想法吗?

 results = list(diseases_collection.find({
                    "date_of_publication":{
                        '$gte':start_date.replace("T", " "),
                        '$lte': end_date.replace("T", " ")
                    }
                }))                        
 print(results)
 return jsonify(results)

【问题讨论】:

  • 你可以尝试用dateutil.parser.parse(start_or_end_date) 代替'$gte''$lte' 字段而不是字符串。
  • 嗨 sid,我得到 dateutil.parser._parser.ParserError: Unknown string format: "2009-10-01T08:45:10"
  • 你能打印出字符串start_dateend_date 它们的确切值是多少?我认为日期解析失败有一些不需要的字符。尝试打印print([c for c in start_date])。这将显示每个字节。
  • 还可以尝试在解析器dateutil.parser.parse(start_or_end_date, fuzzy=True) 中添加fuzzy=True
  • ['"', '2', '0', '0', '9', '-', '1', '0', '-', '0', ' 1'、'T'、'0'、'8'、':'、'4'、'5'、':'、'1'、'0'、'"']

标签: flask pymongo


【解决方案1】:

从 API 调用中清除用户输入总是更好。

import dateutil.parser

results = list(diseases_collection.find({
                    "date_of_publication":{
                        '$gte': dateutil.parser.parse(start_date, fuzzy=True),
                        '$lte': dateutil.parser.parse(end_date, fuzzy=True)
                    }
                }))
 print(results)
 return jsonify(results)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-26
    • 2021-03-14
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2021-04-24
    相关资源
    最近更新 更多