• (一)flask+flask_sqlalchemy+flask_script+flask_migrate 创建一个flask项目


    最近开始学习flask, 做一下记录目前这个并不完善,后期会慢慢把这个项目该有的都搭建起来, 目前只是记录flask项目使用,有些详细的我可能也讲不出来,慢慢会去维护补充。如果时间充足,会用我的思路去做一个项目练习。

    文件名可能不太规范。

    1. 文件结构

     

    • 静态文件的默认文件夹:static
    • 静态文件的默认访问前缀:/static
    • 模板文件的默认文件夹:templates
    testWeb # 项目文件
    ---- app # 主目录
      ---- model # 模型问价夹
        ---- user.py # 用户模型
      ---- dash.py # app 创建函数文件
      ---- handlers.py # 逻辑函数文件, 相当于djano 的 view
      ---- index.py # 没用,忘记删了
      ---- myRoutes.py # 路由文件
      ---- test.py # 没用忘记删了
    ---- config # 配置文件
      ---- __init__.py # 主配置写在这里
    ---- migrations # 使用manage 管理项目的时候自己创建的,主要记录数据迁移版本
    ---- static # 静态文件
    ---- templates # html
    ---- manage.py # 项目管理文件, 使其像diango的 python manage.py 一样使用

    2. config.py 文件内容

    DIALECT = 'mysql' # 使用mysql
    DRIVER = 'pymysql' # 使用 pymysql 连接数据库
    USERNAME = 'root' # 用户名
    PASSWORD = '295213' # 密码
    HOST = 'localhost' # ip
    PORT = '3306' # 端口
    DATABASE = 'hr' # 数据库名
    
    # 数据库连接配置
    SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(
        DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE
    )
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    注意: 数据库 hr 必须先创建。

    3.  dash.py 文件内容及注释

    from flask import Flask
    from flask_cors import CORS
    from flask_sqlalchemy import SQLAlchemy
    
    import config    # 因为config配置是直接写在__init__ 中的所以直接导入即可
    
    # 创建db
    db = SQLAlchemy()
    # 取消跨域请求问题
    
    def create_app():
        # 创建app
        app = Flask(__name__)
        # 导入配置文件
        app.config.from_object(config)
        # 解决跨域请求问题
        CORS(app, resources=r'/*')
        # 数据库绑定app
        db.init_app(app)
        # 导入路由
        from . import myRoutes
        # 注册路由
        myRoutes.register(app)
        return app
    View Code

    4.  user.py  数据库表

    from app.dash import db 
    
    class Users(db.Model):
        __tablename__ = "users" # 创建时候的表名
        username = db.Column(db.VARCHAR(200), primary_key=True, comment="用户名")
    
        def __init__(self, username):
            self.username = username
    View Code

    5. handlers.py  逻辑处理

    from app.model.user import Users
    
    def index():
        users =  Users.query.filter()
        print(users)
        return users.first().username
    View Code

     6. myRoutes.py 路由设置

    from .handlers import index
    
    def register(app):
        # 注册路由
        app.add_url_rule('/index', "index", index, methods=['GET'])
    View Code

    7. manage.py 管理文件

    from app.dash import create_app
    from flask_script import Manager
    from flask_migrate import Migrate, MigrateCommand
    from app.dash import db
    # from app
    dash = create_app()
    
    # 调用manager.run()启动Manager实例接收命令行中的命令;
    manager = Migrate(dash, db)
    # 初始化管理器
    manager = Manager(dash)
    manager.add_command('db', MigrateCommand)
    manager.add_command('db', MigrateCommand)
    
    if __name__ == "__main__":
        manager.run()
    View Code

    注意: 以上文件在导入的路径。

    使用:

    在manage.py 所在的目录下 执行命令

    python manage.py db init  # 初始化
    
    python manage.py db migrate # 记录修改数据
    
    python manage.py db upgrade # 迁移数据
    

     运行项目:

    绑定app
    set flask_app=app.dash 
    设置为debug 环境, 在这种情况下运行, 在配置文件中添加 DEBUG=True 不会生效,所以采用这种方式运行set flask_env=development
    运行 或者 flask run -p port -h ip
    flask run
    注意:
    在 linux 环境下要将 set 改为 export
    

      

    或者直接

    python manage.py runserver 

  • 相关阅读:
    大规模特征构建实践总结
    大数据分析在新型智慧能源建设中的应用
    非局部神经网络,打造未来神经网络基本组件
    异常处理机制
    myecplise debug时怎么看源码 和怎么导入项目中框架的源码
    mybatis 学习的总结
    oracle学习总结2(pl/sql 游标 异常的处理 存储过程和函数 包 触发器)
    Oracle学习的总结
    Oracle 11 g 2R安装以及sql Development
    SpringMVC源代码学习(六)HanderMapping详解
  • 原文地址:https://www.cnblogs.com/ShanCe/p/14193739.html
Copyright © 2020-2023  润新知