flask开发记录

本文最后更新于 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')