SQL与NoSQL的选择
SQL数据库是基于关系模型的关系型数据库,使用结构化查询语言(Structured Query Languag),很高效,少重复
NoSQL包括文档数据库、键值对数据库、列存储数据库、图形数据库,放宽对一致性的要求,有性能上的优势
两者各有好坏,可以根据实际去选择,这里我用的SQLite(不需要服务器便于演示)
SQLAlchemy的使用
SQLAlchemy提供了SQL工具包及对象关系映射(ORM)工具,也就是数据库抽象层,Flask-SQLAlchemy包装了SQLAlchemy,安装起来方便快捷:
pip install flask-sqlalchemy
安装后需要在app.config
字典中添加数据库的URI和配置项,改动代码如下:
from flask_sqlalchemy import SQLAlchemy
...
basedir = os.path.abspath(os.path.dirname(__file__)) # 根据文件名确定绝对路径
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite') # 组成数据库文件路径
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
...
db = SQLAlchemy(app) # db实例表示程序使用的数据库,提供了常用方法供使用
在Flask-SQLAlchemy中,数据库使用URL指定,最流行的数据库引擎采用的数据库URL格式如下:
数据库引擎 | URL |
---|---|
MySQL | mysql://username:password@hostname/datab |