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

 

posted @ 2020-12-26 18:24  ShanCe-刘勇  阅读(137)  评论(0编辑  收藏  举报