更新中:从入门到进阶,Flask开发踩坑大全



  长期更新,记录自己走过的弯路


一、flask-SQLAlchemy相关

1.ImportError: No module named MySQLdb : 没有添加连接mysql数据库的驱动

  解决办法:安装flask-mysqldb包
  参考内容:ImportError: No module named MySQLdb [Solved]

2.AttributeError: 'str' object has no attribute 'config' : 字符串对象没有config属性

  问题排查:定义模型类时继承基类出现了问题,错继承了db
  解决办法:将db改成db.Model
  参考内容:flask-SQLAlchemy 2.0 document - 快速入门

3.sqlalchemy.exc.ArgumentError: Mapper mapped class Tbl_hotel_test->tbl_hotel_test could not assemble any primary key columns for mapped table 'tbl_hotel_test'

字面上看是和主键有关系,我排查了一下午,刚才尝试给一个orm模型类字段加上primary_key属性才解决(原来没有一个primary_key属性)…大无语。
我一开始拍错方向就错了,我以为是sqlalchemy实例的问题,浪费了很多时间



二、flask.blueprint(蓝图)相关

1.werkzeug.routing.BuildError: Could not build url for endpoint 'admin_emp_del' with values ['id']. Did you mean 'admin_emp_list' instead?

  问题排除:经过尝试,发现是emp_del 路由出现了问题,并且访问蓝图下endpoint的格式为 ‘蓝图+endpoint的名字’
  解决办法:将基于类/方法的视图注释,替换成路由视图,然后使用url_for获取视图函数的绝对路径
  参考内容:Python werkzeug.routing.BuildError: Could not build url for endpoint

2.AssertionError: Unimplemented method 'GET'

  出现情景:调用蓝图根目录视图方法时出现。我是以类/方法的形式写的视图函数
  解决方法:将基于类/方法的视图函数 改编为路由视图函数 即可
  参考内容:flask-Blueprint document
  扩展笔记:
    a) 访问蓝图中的文件或者视图函数格式:蓝图名称.文件/视图函数
蓝图目录访问格式示例
    b)两种蓝图视图定义:(以admin为蓝图名称)
       - 基于类/方法的视图:
蓝图基于类、方法视图
        使用这种视图还需要在蓝图中进行注册
注册视图
      - 路由视图:
普通路由视图





三、flask-migrate相关

1.AttributeError: 'NoneType' object has no attribute 'engine'

字面上理解就是找不到engine,而结合上下可知engine是sqlalchemy的引擎属性,所以可初步判定是sqlalchemy连接时出了问题
而最终我是因为在初始化flask-migrate时没有传入sqlalchemy对象,如

 migrate.init_app(app,db)

`


上次更新:2020年10月25日

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值