@
rogwan 猜测其他楼层说的 sqlalchemy 的坑可能包含但不限于 orm session、复杂 sql 的问题。
sqlalchemy 如果使用 orm 操作数据库时默认使用事务,并且会引入一个 sqlalchemy session 的概念,与 db 的 connection 有区别,sqlalchemy 的文档推荐在 web 框架中做到 request context 级别的管理。如果直接 flask + sqlalchemy,如果没有手动回收 session,会出现过多事务未提交的错误,重启应用能释放这些未提交的事务。flask-sqlalchemy 使用 flask 的 app context 机制做了 orm session 在 request context 级别的回收。
复杂 sql 的问题,不管是 orm 层还是 core 层( sql )都会显的特别难受。复杂场景下,只能通过代码规范来限制 sql 拼接在代码不同层级的扩散。
---
关于本帖重点讨论的 Django 和 Flask 都只是轻量级的使用过,这两点好处自然不必说了。说说最近处理的问题。
最近一次处理 Django 的问题是,Django 的配置问题,Django 使用 import module 的方式获取变量,遇到了架构中使用了配置中心下发配置的情况,就显得非常尴尬。
最近一次处理 Flask 的问题是,从 Flask 迁移到其他框架时,业务代码中使用到的全局变量 g,结合业务的使用起来,迁移到其他框架 or 语言时,就要再造一次全局安全的 g 或者转换业务的实现形式。
这两个问题都是框架特有的使用方式与业务场景的绑定导致的问题,
---
个人理解:适当的使用框架但是不要被框架绑定了。