一、所需要安装的第三方包
flask-script
pymysql 数据库
flask-sqlalchemy 实现ORM映射
flask-migrate 发布命令工具
二、项目settings文件配置
class Config:
DEBUG = True
# mysql+pymysql(驱动)://用户名:密码@ip地址:port/数据库名
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:admin@127.0.0.1:3306/flask_test'
SQLALCHEMY_TRACK_MODIFICATIONS = False # Flask-SQLAlchemy将跟踪对象的修改并发出信号。这需要额外的内存,如果不需要,可以将其禁用。
SQLALCHEMY_ECHO = True # 如果设置为 Ture , SQLAlchemy 会记录所有 发给 stderr 的语句,这对调试有用。
class DevelopmentConfig(Config): #开发版本
ENV = 'development'
class ProductionConfig(Config): #生产版本
ENV = 'production'
DDEBUG = False
三、创建模型
from datetime import datetime
from ext import db
class User(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
userName = db.Column(db.String(15), nullable=False)
password = db.Column(db.String(15), nullable=False)
phone = db.Column(db.String(11), unique=True) #unique设置不能重复
createTime = db.Column(db.DateTime, default=datetime.now)
def __str__(self):
return self.userName + "===" + self.password
def __repr__(self):
self.__str__()
四、模型创建完后,一定要记得在app.py中导入这个模型,否则,数据库不能迁移
from apps import create_app
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from ext import db
import apps.user.models
app = create_app()
manager = Manager(app=app)
# 命令工具
migrate = Migrate(app=app, db=db) # 作用: 影响数据库的映射
manager.add_command('db', MigrateCommand) # 作用: 将命令交给manager管理, 和 @manager.command作用类似
# @manager.command
# def init():
# print('初始化')
if __name__ == '__main__':
manager.run() # python app.py runserver -h 0.0.0.0 -p 8000 # -p -h 可选,设置ip和端口
五、数据库迁移
python app.py db init 生成migrations文件夹
python app.py db migrate 执行迁移,产生一个版本文件
python app.py db upgrade 同步到数据库中,生成模型对应的表
六、如果后期修改模型或增加模型,只需要执行下面两个命令,不用再执行init,init只执行一次
python app.py db migrate
python app.py db upgrade
七、降级数据库版本
python app.py db downgrade #会降低数据库版本,并删除对应的表

本文介绍了在Flask项目中配置数据库所需的第三方包,如flask-script、pymysql、flask-sqlalchemy和flask-migrate。详细阐述了settings文件配置、模型创建、数据库迁移的步骤,包括初始化、迁移和升级。同时,提到了如何在模型更改后进行数据库迁移,以及如何降级数据库版本。
1048

被折叠的 条评论
为什么被折叠?



