本文分两部分:
第一部分是吐槽 Flask-SQLAlchemy,第二部分是 此书关于视图函数中操作数据库的内容并分享本人踩坑案例。好吧,其实这个大坑是我自己给自己挖的。。
第一部分:
首先其实按照此书前四章来操作其实是没太大问题的,但从第五章的数据库开始,就有点绕了。简单粗暴来句总结:**如果有一个问题,你想到可以用SQLAlchemy 和ORM来解决,那么现在你有三个问题了。**
作为一名曾经深陷于SQLAlchemy和Flask-SQLAlchemy之间理不清剪还乱的暧昧关系而不知频频给自己挖坑的小白用户,我对此是有切肤之痛的。
我之所以在SQLite和SQLAlchemy之间选择了 “SQLAlchemy,的Flask-SQLAlchemy”来做数据库,起因是我轻信了这么一句话:
>可用 Flask-SQLAlchemy 这个模块简化操作。
看到了没??简化操作!
# 简化操作
四个大字闪闪发光!!!比撒满碎芝士的大理石重芝士蛋糕切片还要充满诱惑力!!
但这其实是个大坑!!!
因为,你要好好区分“Flask 中 SQLAlchemy “以及“Flask 中 SQLAlchemy 的 Flask-SQLAlchemy 这个模块”!!
注意,我上面说的 SQLAlchemy 并不是 SQLAlchemy ,而是“Flask 中 SQLAlchemy 的 Flask-SQLAlchemy 这个模块”,所以我被坑惨了!!我一会看 SQLAlchemy 教程,一会看 Flask-SQLAlchemy 这个模块的教程...一会class ,一会basedir一会create_engine...为什么初始化数据库有完全不同的代码啊!为什么一边是db.session,一边是con.execute!!!
然后,SQLAlchemy 的开发者是要多想炫耀自己记忆力有多好?你非要用10个字母又大写又小写来命名,并且还要弄个好几个长得差不多但其实每个脾气都不一样暗藏杀机的 ”sqlalchemy.ext.declarative “ 和 “ flask_sqlalchemy ”以及 “SQLAlchemy” 到底是想怎样? import 个 “declarative_base”到底又是搞什么鬼??这个单词有几个字母我数来数去都数不清~~~