Flask ==> Migrate
1.结构图
2.一般流程。
#!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask from auth.auth import Auth from flask_session import Session # 1. 引入Flask-SQLAlchemy from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() from .views.account import account from .views.main import main from .views.user import user # 3. 导入models中的表 from .models import * def create_app(): app = Flask(__name__) app.debug = True app.secret_key = 'sdiusdfsdf' # 设置配置文件 app.config.from_object('settings.DevelopmentConfig') # 注册蓝图 app.register_blueprint(account) app.register_blueprint(user) app.register_blueprint(main) # 注册组件 # Session(app) Auth(app) # 2. 注册 Flask-SQLAlchemy # 这个对象在其他地方想要使用 # SQLAlchemy(app) db.init_app(app) return app
#!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask from auth.auth import Auth from flask_session import Session # 1. 引入Flask-SQLAlchemy from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() from .views.account import account from .views.main import main from .views.user import user # 3. 导入models中的表 from .models import * def create_app(): app = Flask(__name__) app.debug = True app.secret_key = 'sdiusdfsdf' # 设置配置文件 app.config.from_object('settings.DevelopmentConfig') # 注册蓝图 app.register_blueprint(account) app.register_blueprint(user) app.register_blueprint(main) # 注册组件 # Session(app) Auth(app) # 2. 注册 Flask-SQLAlchemy # 这个对象在其他地方想要使用 # SQLAlchemy(app) db.init_app(app) return app
init.py 在 manage.py 里的 create_app 跳入之后的。
1.先处理app。
# 1. 引入Flask-SQLAlchemy from flask_sqlalchemy import SQLAlchemy #导入SQLALchemy db = SQLAlchemy() #实例化SQALchemy对象
ps: 这个 db(sqlalchemy)对象就和session也一样,可以创建个对象。 session里面有个 __init__ 方法,里面含有各种方法。
2.注册 Flask-SQLAlchemy。
运用类似session的__intit__ 引入传参数,然后在执行。
# 1. 引入Flask-SQLAlchemy from flask_sqlalchemy import SQLAlchemy #导入SQLALchemy db = SQLAlchemy(app) #实例化SQALchemy对象。 db= SQLALchemy(参数) 可以传个app参数
# 2. 注册 Flask-SQLAlchemy
# 这个对象在其他地方想要使用
# SQLAlchemy(app)
db.init_app(app) #执行
3.导入models表。
# 3. 导入models中的表 from .models import *
4.写类继承db.Model。
ps: 正经: 原来我们写的继承Base。
不正经: 一下这种方式,饶了一圈。本质和Base一样的。
5.主要功能: 创建,修改表等等功能。 中间有一步: 定制命令, manager=Manager(app)
5.1:导入:from flask_migrate import Migrate, MigrateCommand
from app import create_app, db
5.2 创建migrate 示例
5.3 创建db命令
连接数据库用配置文件init里的文件执行 。我们用了flask组件,以后就去配置文件里写就好了。
只要把 sqlalchemy 的参数拿到配置文件里就好了。
1.拿配置文件
setting.py:
最后连上数据库:
3.Flask_migrate : 类似django的 python manage.py db migrate = python manage.py makemigrations
python manage.py db upgrade = python manage,py migrate
二: 操作数据库
1. 对数据库做操作需要有session。有了session才能做操作。那么 session从哪来呢?
回答: db.session 它会自动帮我们创建session。 它是 flask里的 sqlalchemy 的对象里面的session。
以前我们会的session两种:
1. 线程安全
2. 手动创建
后面两步:要 commit 和 remove
执行sql 方式:
1.第一种方式:
方式一: result = db.session.query(models.User.id,models.User.name).all() db.session.remove()
2.第二种方式:
方式二:
result = models.Users.query.all() #局限于自己那张表
flask回顾:用了哪些插件
Flask
DButils : 针对原生sql的时候用的。 之后如果需要用 sqlalchemy 那么我们就只好二选一了。 也可都用,但是最好不要这样。
Flask-session:
Flask-Script:
Flask-Migrate:
Flask-SQLAIchemy:
blinker:
wtforms:
requirements.txt:
pip3 freeze
pip3 freeze > requirements.txt
获取环境中所有安装的模块。
# pip3 install pipreqs # 获取当前所在程序目录中涉及到的所有模块,并自动生成 requirements.txt 且写入内容。
pipreqs ./
# 写程序路径, 我们需要找谁,它会帮我们找到
进入程序目录:
pip3 install -r requirements.txt