一周flask-sqlachlemy踩坑全记录
1. 最大的心得,早点搭建测试环境,不然你不知道自己写的是什么东西。调试有助于对陌生的方法对象的理解。
2.flask单元测试踩坑 单元测试的函数名定义可能出现玄学问题。例如test_foo 出现bug 应修改成 test_a_foo类似的形式
3.sqlite数据库URL配置踩坑 直接写成 ''sqlite3:\\\\test.db"是不行的 通过获取当前路径再jion成绝对路径也是不行的,都会报url无法解析错误
4.关于查询操作的过滤函数 filter filter非常灵活,可以忽略filter_by的存在。判断条件为表达式,支持 符号表达式 = > >=等操作符(不支持 in ),也支持_in\_and\_or等操作符,但是后者是ORM类对象才有的方法,所以判断只能是单向的(例如:表单对象_in(判断条件) 反之则不成立)支持多个判断条件在括号内以逗号分隔,支持多个filter()以.相连 ,但是要求query() 括号内必须填写表名,否则会报没有filter方法。多条件查询可以将条件存入list中 <list:conditions>然后 filter(*conditons)实现多条件查询,代码更简洁。
5.类型解读 db.session.query().filter().all() 查询出来的结果是一个特殊的list对象,BaseQuery-list 独特之处是当查询条件在数据库中没有相符的之后,BaseQuery-list并不为空,并不能以其_offset \_limit对象来判断list其中的元素存在与否
6.一些好用的方法 对于 dict对象 foo.get('key') foo.keys() foo.__setattr__()
暂时这么多 别的没想起来
网友评论