新建项目做好基础配置
一、Flask模型简介
Flask默认并没有提供任何数据库操作的API
我们可以选择任何适合自己项目的数据库来使用
Flask中可以自己的选择数据,用原生语句实现功能,也可以选择ORM(SQLAlchemy,MongoEngine)
SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台。SQLAlchemy提供了高层ORM,也提供了使用数据库原生SQL的低层功能。
ORM:
将对对象的操作转换为原生SQL
优点
易用性,可以有效减少重复SQL
性能损耗少
设计灵活,可以轻松实现复杂查询
移植性好
针对于Flask的支持,官网地址
pip install flask-sqlalchemy
安装驱动
pip install pymysql
二、定义模型
使用SQLALchemy的对象去创建字段
其中__tablename__指定创建的数据库的名称
创建models.py文件,其中定义模型
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Student(db.Model):
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
s_name = db.Column(db.String(10),unique=False,nullable=False)
s_age = db.Column(db.Integer,default=19)
__tablename__ = 'student'
2.字段类型
Integer表示创建的s_id字段的类型为整形,
primary_key表示是否为主键
String表示该字段为字符串
unique表示该字段唯一
default表示默认值
autoincrement表示是否自增
3.别名:
__tablename__ = 'student'
三、关联数据库
在manage.py中添加数据库配置,
1.初始化SQLALchemy
在定义的__init__.py文件中使用SQLALchemy去整合一个或多个Flask的应用
有两种方式:
第一种:
from flask_sqlalchemy import SQLALchemy
app = Flask(__name__)
db = SQLAlchemy(app)
第二种:
from App.models import db
def create_app():
app = Flask(__name__)
db.init_app(app)
return app
2.配置数据库的访问地址
数据库连接的格式:
dialect+driver://username:password@host:port/database
dialect数据库实现
driver数据库的驱动
【例】: 访问mysql数据库,驱动为pymysql,用户为root,密码为123456,数据库的地址为本地,端口为3306,数据库名称HelloFlask
设置如下: “mysql+pymysql://root:123456@localhost:3306/HelloFlask”
在初始化__init__.py文件中如下配置:
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://root:123456@localhost:3306/HelloFlask"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
【例】
# 数据库的配置
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email protected]:3306/flask5' #用户名root,密码123456,表名flask5
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
#初始化数据库
db.init_app(app)
注意:在迁移前首先要开启数据库mysql
3.创建模型==create_all()
对创建的模型数据进行迁移,这个方法只能用于首次创建,后面迁移需要用migrate(不建议用),建议用sql语句,orm实现的数据库迁移不是最优方式
@blue.route('create_db/') #设置路由信息
def create_db():
db.create_all() #调用flask方法
return '创建成功'
运行项目,浏览器中显示创建成功后,查看数据库可以看到此时生成刚创建的学生表
mysql> show tables;
+------------------+
| Tables_in_flask5 |
+------------------+
| student |
四、数据库的migrate迁移(不推荐)
在django中继承了makemigrations,可以通过migrate操作去更新数据库,修改我们定义的models,然后在将模型映射到数据库中。
在flask中也有migrate操作,它能跟踪模型的变化,并将变化映射到数据库中
1、安装migrate
pip install flask-migrate
2、 配置使用migrate
(1)初始化,使用app和db进行migrate对象的初始化
from flask_migrate import Migrate
#绑定app和数据库
Migrate(app=app, db=db)
(2) 安装了flask-script的话,可以在Manager()对象上添加迁移指令
from flask_migrate import Migrate, MigrateCommand
app = Flask(__name__)
manage = Manager(app=app)
manage.add_command('db', MigrateCommand)
操作:
python manage.py db init 初始化出migrations的文件,只调用一次
python manage.py db migrate 生成迁移文件
python manage.py db upgrade 执行迁移文件中的升级
python manage.py db downgrade 执行迁移文件中的降级
python manage.py db --help 帮助文档