一、flask-sqlalchemy
a. 下载安装 pip3 install flask-sqlalchemy b. chun.__init__.py 导入并实例化SQLAlchemy from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() 注意事项: - 必须在导入蓝图之前 - 必须导入models.py c. 初始化 db.init_app(app) d. 在配置文件中写入配置 # ##### SQLALchemy配置文件 ##### SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/s9day122?charset=utf8" SQLALCHEMY_POOL_SIZE = 10 SQLALCHEMY_MAX_OVERFLOW = 5 e. 创建models.py中的类(对应数据库表) chun/models.py from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column from sqlalchemy import Integer,String,Text,Date,DateTime from sqlalchemy import create_engine from chun import db class Users(db.Model): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(32), index=True, nullable=False) depart_id = Column(Integer) f. 生成表(使用app上下文) from chun import db,create_app app = create_app() app_ctx = app.app_context() # app_ctx = app/g with app_ctx: # __enter__,通过LocalStack放入Local中 db.create_all() # 调用LocalStack放入Local中获取app,再去app中获取配置 g. 基于ORM对数据库进行操作。 from flask import Blueprint from chun import db from chun import models us = Blueprint('us',__name__) @us.route('/index') def index(): # 使用SQLAlchemy在数据库中插入一条数据 # db.session.add(models.Users(name='高件套',depart_id=1)) # db.session.commit() # db.session.remove() result = db.session.query(models.Users).all() print(result) db.session.remove() return 'Index'
二、flask-script
安装: pip3 install flask-script 功能: a. 增加 runserver from chun import create_app from flask_script import Manager app = create_app() manager = Manager(app) if __name__ == '__main__': # app.run() manager.run() b. 位置传参 from chun import create_app from flask_script import Manager app = create_app() manager = Manager(app) @manager.command def custom(arg): """ 自定义命令 python manage.py custom 123 :param arg: :return: """ print(arg) if __name__ == '__main__': # app.run() manager.run() c. 关键字传参 from chun import create_app from flask_script import Manager app = create_app() manager = Manager(app) @manager.option('-n', '--name', dest='name') @manager.option('-u', '--url', dest='url') def cmd(name, url): """ 自定义命令 执行: python manage.py cmd -n wupeiqi -u http://www.oldboyedu.com :param name: :param url: :return: """ print(name, url) if __name__ == '__main__': # app.run() manager.run()
三、flask-migrate
安装: pip3 install flask-migrate 依赖:flask-script #!/usr/bin/env python # -*- coding:utf-8 -*- from sansa import create_app from sansa import db from flask_script import Manager from flask_migrate import Migrate, MigrateCommand app = create_app() manager = Manager(app) Migrate(app, db) """ # 数据库迁移命名 python manage.py db init python manage.py db migrate python manage.py db upgrade """ manager.add_command('db', MigrateCommand) if __name__ == '__main__': manager.run() # app.run()
四、找到项目使用的所有组件和版本
安装: pip install pipreqs pipreqs ./ --encoding=utf-8 #在终端中输入这条命令后会产生一个requirements.txt文件,里面包含项目中所需要的全部组件和版本
五、虚拟环境
安装: pip3 install virtualenv virtualenv env1 --no-site-packages #上面命令会初始化一个干净的新的环境, env1 #进入env1目录 activate #激活,进入新创建的环境 deactivate
综合应用示例
models.py
from sqlalchemy import Column from sqlalchemy import Integer,String from chun import db class Users(db.Model): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String(32), index=True, nullable=False) depart_id = Column(Integer)
user.py
from flask import Blueprint ac = Blueprint('ac',__name__) @ac.route('/login') def login(): return 'Login'
account.py
from flask import Blueprint from chun import db from chun import models us = Blueprint('us',__name__) @us.route('/index') def index(): # 使用SQLAlchemy在数据库中插入一条数据 # db.session.add(models.Users(name='高件套',depart_id=1)) #调用db.session的时候,内部为每个线程去数据库连接池中获取一个连接 # db.session.commit() # db.session.remove() result = db.session.query(models.Users).all() print(result) #[<Users 1>, <Users 2>] db.session.remove() return 'Index'
__init__.py
from flask import Flask from flask_session import Session # 第一步:导入并实例化SQLAlchemy from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() #创建了SQLAlchemy要用到的所有的东西,但缺少数据库的连接 #db相当于全部变量必须在导入蓝图的砂上面 #因为蓝图要操作数据必须得先导入db from .views.account import ac from .views.user import us from .models import * #必须要导入model,不然找不到模块就生成不了表 def create_app(): app = Flask(__name__) app.config.from_object('settings.ProConfig') app.register_blueprint(ac) app.register_blueprint(us) # Flask-Session: 第一步实例化Session # Session(app) # 第三步:依赖app中的配置文件 db.init_app(app) #去app里面读配置文件 return app
settings.py
from redis import Redis class BaseConfig(object): # Flask-Session: 第二步设置相应的配置 # SESSION_TYPE = 'redis' # SESSION_REDIS = Redis(host='192.168.0.94', port='6379') # ##### SQLALchemy配置文件 ##### SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:2180736@127.0.0.1:3306/s9day122?charset=utf8" SQLALCHEMY_POOL_SIZE = 10 SQLALCHEMY_MAX_OVERFLOW = 5 SQLALCHEMY_TRACK_MODIFICATIONS = False pass class ProConfig(BaseConfig): pass
create_table.py
from chun import db,create_app app = create_app() app_ctx = app.app_context() # app_ctx = app/g with app_ctx: # 执行app_ctx里面的__enter__方法,通过LocalStack放入Local中 db.create_all() # 调用LocalStack去Local中获取app,再去app中获取配置
manage.py
from flask_script import Manager from flask_migrate import Migrate, MigrateCommand from chun import create_app from chun import db app = create_app() manager = Manager(app) Migrate(app, db) """ # 数据库迁移命名 python manage.py db init python manage.py db migrate # makemirations python manage.py db upgrade # migrate """ manager.add_command('db', MigrateCommand) @manager.command def custom(arg): """ 自定义命令 python manage.py custom 123 :param arg: :return: """ print(arg) @manager.option('-n', '--name', dest='name') @manager.option('-u', '--url', dest='url') def cmd(name, url): """ 自定义命令 执行: python manage.py cmd -n wupeiqi -u http://www.oldboyedu.com :param name: :param url: :return: """ print(name, url) if __name__ == '__main__': # app.run() manager.run()