我们通过 SqlAchemy 连接数据库,安装扩展
```
(.venv) root@airvip:~/python_app/flask-demo# pip install flask-sqlalchemy
(.venv) root@airvip:~/python_app/flask-demo# pip install pymysql
```
我们把数据库连接信息放在配置中,修改 `config.py` 文件中配置类
```
class Config(object):
SECRET_KEY = "AIRVip123456airvip"
# 数据库配置
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://root:123456@127.0.0.1:3307/jdbc1"
# 如果设置成 True (默认),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号,需要额外的内存。
# 如果不必要,可以禁用。
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_ECHO = True # 开发模式开启可以查看 sql 语句
```
改造 `app` 目录下的 ` __init__ ` 初始化文件
```
#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config_map
from app.utils.commons import ReCoverter
# 创建数据库对象
db = SQLAlchemy()
# 工厂模式
def create_app(config_name):
app = Flask(__name__)
# 设置 flask 的配置信息
config_class = config_map[config_name]
app.config.from_object(config_class)
# 使用 app 初始化 db
db.init_app(app)
# 为 flask 添加自定义的转换器
app.url_map.converters["re"] = ReCoverter
# 注册蓝图
from app import api_1_0
app.register_blueprint(api_1_0.bp, url_prefix="/api/v1.0")
# 如果只是接口,可以不注册 admin 模块
from app import admin
app.register_blueprint(admin.bp, url_prefix="/admin")
return app
```