前言
flask作为一个轻量级的框架,很受大家的喜爱,那flask能不能像django一样管理数据库呢?答案是可以的,为此特意做下笔记,方便以后参考
一、环境
python 3.7
flask 2.0.2
数据库 mysql
二、开始
文件目录如下(common.py暂时没用上)
1.设置配置文件
config.py
# 配置信息类
class Config(object):
# 调试信息
DEBUG = True
# 生成16位随机整数作为密钥
# SECRET_KEY = random_num(16)
# 配置数据库信息,先创建一个叫flask_teach的数据库,才能连上
SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/flask_teach"
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 设置这个参数为True,当数据库的内容改变之后,视图函数在结束的时候就会自动提交
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
2.初始化文件
init.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import Config
# 创建数据库对象
db = SQLAlchemy()
# 创建app
def create_app():
# 创建flask对象
app = Flask(__name__)
# 引入配置信息
app.config.from_object(Config)
# 关联app和数据库
db.init_app(app)
return app
3.创建模型类
models.py
from . import db
class Test(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(10))
sex = db.Column(db.String(2))
4.创建管理文件
manage.py
from flask_script import Manager, Server
from flask_migrate import Migrate, MigrateCommand
# 这里的models必须引入,否则无法创建表
from flask_teach import create_app, db, models
# 调用create_app()函数创建app
app = create_app()
# 通过Manager类创建manager对象,关联app
manager = Manager(app)
# 使用Migrate,关联db,app
Migrate(app, db)
# 给manager添加一条操作命令
manager.add_command('db', MigrateCommand)
# 创建视图函数
@app.route('/')
def hello_world():
return 'hello world'
if __name__ == '__main__':
manager.run()
5.运行
先将数据库模型提交到数据库中(所有命令都在项目根目录下执行)
1.初始化
输入命令(只执行一次就好)
python manage.py db init
成功之后会生成这个文件夹(有这个文件夹就不用执行上面的命令了)
2.将数据表的更新保存
输入命令
python manage.py db migrate
3.将数据表更新到数据库
输入命令
python manage.py db upgrade
4.结果
可以看到创建了对应的表(alembic_version是存储数据库更新信息的)
这时候要运行项目的话要输入命令
python manage.py runserver
运行结果
大功告成,有什么问题可以在评论区留言。
下一篇:flask蓝图使用