如前所述,模型(models)是对数据抽象并提供通用访问接口的一种方式。在大多数网络应用中,数据会被存储在一个关系数据库管理系统(RDBMS)中,也就是把数据格式化存储在由行与列组成的表格中,且能够跨表对数据进行比较。例如MySQL,Postgres,Oracle,MSSQL。
为了基于数据库抽象出数据模型,我们需要使用一个叫作SQLAlchemy的Python包。SQLAlchemy在最底层包装了数据库操作接口,在最上层提供了对象关系映射(ORM)。ORM是在基于不同的数据结构和系统类型的数据源之间传递和转换数据的技术。在这里,它用来把大量不同类型的数据库中的数据,转换成python对象的集合。同时,像Python这样的语言,允许你在不同的对象之间建立引用,读取和设置它们的属性;而SQLAlchemy这样的ORM,能为你将对象操作转换为传统的数据库操作。
为了把SQLAlchemy绑定到我们的应用上下文中,我们可以使用Flask SQLAlchemy。它在SQLAlchemy上提供了一层包装,这样就可以结合Flask的一些特性来方便地调用SQLAlchemy的功能。如果你对SQLAlchemy已经很熟悉,那么你可以单独使用它,而无须和F