Python datetime操作MongoDB时fromisoformat类型错误求助
问题排查与解决
核心错误原因
fromisoformat方法误用:这个方法的作用是将ISO格式的字符串转换为datetime对象,但你传入的userdate已经是通过datetime.datetime(year, month, day)生成的datetime对象,完全不需要二次转换,这直接触发了"argument must be str"的类型错误。- 语法与命名错误:
- 查询条件的字典格式错误:
“createdat”{“$lte”: ...}缺少键值对的冒号,正确写法是"createdat": {"$lte": ...} - 变量大小写不匹配:定义的是
Year=2023,但创建datetime时用的是year,Python大小写敏感,会引发NameError - 关键字错误:
For需小写为for,Python关键字必须小写
- 查询条件的字典格式错误:
修正后的代码
import datetime # 假设已完成MongoDB连接初始化,获取到集合collec year = 2023 month = 4 day = 28 user_date = datetime.datetime(year, month, day) for rec in collec.find({"createdat": {"$lte": user_date}}): print(rec)
补充说明
MongoDB的日期字段存储为ISODate类型,Python的datetime对象可以直接与它进行比较,无需额外格式转换。另外建议变量名遵循PEP8规范(如user_date代替Userdate),提升代码可读性。
内容的提问来源于stack exchange,提问作者Amna
相关产品推荐
相关产品推荐

