我們通過 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
```