实验环境
Ubuntu 16.04 LTS
Anaconda 5.1
python 3.6
什么是Flask
Flask是一个使用Python开发的“微型”Web框架,其“微型”的目的在于,保持一个“简单”并且“可扩展”的框架核心,为开发者提供一个选择自由的Web框架。基于此,开发者可以自由的选择数据库或模板引擎,为自己的Web应用做合适的选择。
什么是SQLAlchemy
SQLAlchemy是一个ORM(对象关系映射)。基于对目标数据库的原生SQL的抽象,它提供了与一长串数据库引擎的一致的API,其中包括MySQL,PostgreSQL,和SQLite。使得在你的模型和数据库间交换数据时,带来了便利,同时也简化了诸如换掉数据库引擎和迁移数据库模式等其他事情。
什么是Flask-SQLAlchemy
Flask-SQLAlchemy是一个Flask插件,使得在Flask中使用SQLAlchemy更为方便。它为SQLAlchemy设置了许多合理的配置,同时内置了一些session管理,这样就不用在应用代码里处理这种基础事务了。
安装 Flask-SQLAlchemy
pip install flask-sqlalchemy
数据库管理
1 配置数据库
首先初始化并配置Flask应用,然后用它来初始化SQLAlchemy数据库处理程序。为数据库配置使用一个instance文件夹,所以应该在初始化应用时加上instance_relative_config
选项,然后调用app.config.from_pyfile
。
# myapp/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__, instance_relative_config=True)
app.config.from_object('config')
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
2 定义模型
Column
,Integer
,String
,Model
和其他的SQLAlchemy类都可以通过由Flask-SQLAlchemy构造的db
对象访问。例如,定义一个储存用户信息的模型。每个用户有一个ID和一个用户名。
# myapp/models.py
from . import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(80), unique=True)
def __init__(self, username):
self.username = username
def __repr__(self):
return '<User %r>' % self.username
3 数据库基本操作
- 创建表
from . import db
db.create_all()
- 删除表
db.drop_all()
- 创建行
# create object
user_Bob = User(username='Bob')
# add object to session
db.session.add(user_Bob)
# commit session to insert object into database
db.session.commit()
- 删除行
db.session.delete(user_Bob)
session.commit()
- 修改行
user_Bob.username = 'Bobb'
db.session.add(user_Bob)
session.commit()
- 查询行
Bob = User.query.filter_by(username='Bob')