本文最后更新于 2023年10月8日。
在数据库中增加了time类型的数据后,报最大递归错误:
File "C:\ProgramData\Anaconda3\envs\env_flask\Lib\site-packages\lin\encoder.py", line 45, in default
return JSONEncoder.default(self, o)
File "C:\ProgramData\Anaconda3\envs\env_flask\Lib\site-packages\lin\encoder.py", line 45, in default
return JSONEncoder.default(self, o)
File "C:\ProgramData\Anaconda3\envs\env_flask\Lib\site-packages\lin\encoder.py", line 45, in default
return JSONEncoder.default(self, o)
[Previous line repeated 955 more times]
找到了原因,自定义解析器中没有定义time类型,并且返回了函数自身,增加了下面一段time类型的定义就好了
# print(datetime.__file__)
# AttributeError: type object 'datetime.datetime' has no attribute '__file__'
if isinstance(o, time): #230802 自己增加
# print('2222',type(o))
# print('333',type(time))
# if type(o) is time:
return o.strftime("%H:%M:%S")
如果不增加该条件,把解析器最后的
return JSONEncoder.default(self, o)
注释掉会导致不解析time类型的字段,就不显示了。
如果改成
return o
会出现循环调用错误
- #### File "C:\ProgramData\Anaconda3\envs\env_flask\Lib\json\encoder.py", line _440_, in `_iterencode`
yield from _iterencode(o, _current_indent_level)
- #### File "C:\ProgramData\Anaconda3\envs\env_flask\Lib\json\encoder.py", line _437_, in `_iterencode`
raise ValueError("Circular reference detected")
> ValueError: Circular reference detected
修改了第三方库,所以直接把库放到自己的项目文件夹,
这样会导致import找不到库,在入口文件starter.py开头增加如下代码即可。
import sys ## 230802增加,用于解决将lin模块移动到项目文件夹后import找不到的问题
sys.path.append('./app')