zoukankan      html  css  js  c++  java
  • 基于SQLAIchemy的Flask目录

    预先知识

    flask的基本使用

    快速搭建开发的目录,以后我们在用Flask开发项目的时候可以直接用这个目录,不需要再自己创建.

    flask-sqlalchemy

    flask-sqlalchemy相当于是粘合剂,他把flask跟sqlalchemy粘合在一起,

    安装

    pip install flask-sqlalchemy

    使用

    • 在你的项目中的__init__.py:
    #导入并实例化SQLAlchemy
    from flask_sqlalchemy import SQLAlchemy
    db = SQLAlchemy()
    import models

    注意事项:

    • - 必须在导入蓝图之前
    • - 必须导入models.py

    在__init__.py中

    #初始化
    db.init_app(app)

     

    •  在配置文件中写入配置
      # ##### SQLALchemy配置文件 #####
      SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3306/s9day122?charset=utf8"
      SQLALCHEMY_POOL_SIZE = 10
      SQLALCHEMY_MAX_OVERFLOW = 5

      更多配置信息的详解--->猛击这里

    •  创建models.py中的类(对应数据库表) 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)
    • 当配置完上面的内容,我们已经可以对数据库增加表操作(但是我们一般不用,后面有组件帮助我们实现)
    # 生成表(使用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中获取配置
    • 基于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()

    flask-script 

    该组件可以帮我们增加像Django一样,输入命令进行runserver,也可以自己自定制命令操作

    安装

    pip install flask-script 

    使用

    配置

    在manage.py文件中导入模块,并且注册manager

    from flask_script import Manager
    app = create_app()
    manager = Manager(app)
    
    if __name__ == '__main__':
        # app.run()
        manager.run()

    当完成这部操作的时候我们就可以对 用命令进行runserver开启我们的Flask程序

    manage.py runserver -h 127.0.0.1 -p 8001

    自定义命令

    位置传参

    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()

    关键字传参

    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 

    依赖flask-script 

    安装

    pip install flask-migrate 

    使用

     在manage.py文件中:

    # -*- coding:utf-8 -*-
    
    from BaseFlask import create_app
    from BaseFlask 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 #相当于Django的makemigration
        python manage.py db upgrade #相当于Django的migrate
    """
    manager.add_command('db', MigrateCommand)
    
    
    if __name__ == '__main__':
        manager.run()
        # app.run()

    点击下载示例

  • 相关阅读:
    Gamma阶段第三次scrum meeting
    【技术博客】Django+uginx+uwsgi框架的服务器部署
    Gamma阶段第二次scrum meeting
    Gamma阶段第一次scrum meeting
    团队项目贡献分
    Beta阶段发布说明
    Beta阶段测试报告
    【Beta阶段】第十次Scrum Meeting
    团队贡献分汇总
    [Gamma]Scrum Meeting#4
  • 原文地址:https://www.cnblogs.com/chenxuming/p/9460865.html
Copyright © 2011-2022 走看看