前面说到两种数据库是各有优点各有所长的。对于python来说,大多数的数据库引擎都是有对应的数据包的。Flask框架并不限制使用哪一种数据库,因此是可以根据需要自由选择SQL抑或是NoSQL。
对于稍后的学习,由于我们的只是学习版的小程序,所以选择哪一种都是很好的,不会有什么性能影响。
常用的SQL数据库框架有:MySQL,cx_Oracle,Postgres,SQLite等
常见的NoSQL数据库框架有:Redis,MongoDB,CouchDB等。
当然,如果不想用传统的数据库框架,python还提供了数据库抽象层代码包,如SQLAlchemy和MongoEngine。使用这些抽象包可以直接处理高级的python对象,而不需要处理表等数据库实体。
对于如此多的选择,在Flask项目中,我们在使用前应该考虑什么因素呢?
易用性:显然使用ORM抽象层明显是比直接操作数据库要更简单,可以使我们在不知不觉的情况下,把高层的面向对象操作转换成低层的数据库指令。如果易用第一,则选择ORM方式的。
性能:从来,任何事都是有代价的,ROM抽象层易用的同时,必定带来了额外的开销,虽然,多数情况下,这种开销使得效率降低很微小,但是某些情况却不是如此,另外,直接操作数据库底层,会有更高的控制自由度,利于优化,所以,当效率第一时,选择传统数据库框架比较好。
可移植性:能否再开发平台与生产平台中使用,这个是必须考虑的问题。如果是云平台托管代码,提前了解云服务提供哪些选择是很有必要的。
Flask集成度:虽然,选择框架的时候,不一定要选择集成了Flask的框架,但选择这些框架可以节省关于集成编码的时间,而且,能简化配置和操作,所以,选择专门为Flask开发的扩展是值得优先考虑的。