- 个人笔记 个人备忘录 查阅使用
0.文件结构
flask_sql
|-app.py
|-config.py
|-manager.py
|-models
|-base.py
|-article
1.flask数据库操作需要的包
序号 | 包名 | 下载包 | 作用 |
---|---|---|---|
1 | cymysql | pip intsall cymysql | 数据库驱动 |
2 | flask_sqlalchemy | pip install flask-sqlalchemy | 数据库连接 |
3 | flask_script | pip install flask-script | 数据库创建和迁移 |
flask_migrate | pip install flask-migrate | 数据库创建和迁移 |
2.配置文件
config.py
DIALECT = 'mysql'
DRIVER = 'cymysql'
USERNAME = 'root'
PASSWORD = '123456'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_sql'
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(
DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False
- 导入配置文件
app.config.from_object('config')
3.模型
- models文件夹下模型基础文件base.py文件
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
- models文件夹下文章模型article.py文件
from models.base import db
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
context = db.Column(db.Text, nullable=False)
- 还可以添加其他模型
4.数据库连接
db.init_app(app)
- 原来模型创建方法(这种创建方法,如果更改模型了,需要在数据库删除原来模型生成的sql表,重新运行,才能在数据库生成新的模型sql表)
from models.Base import db
from models.article import Article # 需要导入Article模型,不然不会创建表
db.init_app(app)
with app.app_context():
db.create_all()
5.数据库迁移
manager.py
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from app import app
from models.Base import db
manager = Manager(app)
# 1.使用flask_migrate,必须绑定app和db
migrate = Migrate(app, db)
# 2.把MigrateCommand命令添加到manager中
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
- 数据库迁移命令(进入manager.py文件所在目录,执行下面三个命令,用于模型创建和模型迁移)
- python manage.py db init:初始化一个迁移脚本的环境,只需要执行一次。
- python manage.py db migrate:将模型生成迁移文件,创建新模型或模型更改了,需要执行这个命令。
- python manage.py db upgrade:将迁移文件真正的映射到数据库中,每次运行了migrate命令后,就记得要运行这个命令。