flask数据库操作常用包-数据库迁移

0.文件结构

flask_sql
	|-app.py
	|-config.py
	|-manager.py
	|-models
		|-base.py
		|-article

1.flask数据库操作需要的包

序号包名下载包作用
1cymysqlpip intsall cymysql数据库驱动
2flask_sqlalchemypip install flask-sqlalchemy数据库连接
3flask_scriptpip install flask-script数据库创建和迁移
flask_migratepip 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命令后,就记得要运行这个命令。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值