flask-mysql配置

Python-flask MySQL配置


最近在實習做公司的一個小項目,麻雀雖小,五臟俱全。雖然我投的是算法崗位,但剛進來讓我做後臺服務器,讓我感覺壓力還是蠻大的。我開發的服務器是用python-flask來做的,flask在這段時間開發中,讓我學習到了很多,終於理解微小的含義。

場景1

flask默認只有一個run.py文件,如果現在沒有功能還不完善,我想後期擴充功能,但又不想修改run.py文件,該怎麼辦?

答:使用藍圖。

藍圖的的定義是這樣的,可以將不同的模塊獨立分開,採用不同的路由,這樣就可以模塊化應用。

配置如下:

首先藍圖模塊bp.py:

from flask import Blueprint, jsonify
bp = Blueprint('mysql', __name__, url_prefix='/db')
@bp.route('/index')
def index():
    return 'blueprint model'

這樣我們就定義了一個基本的藍圖。首先我們引入Blueprint這個模塊,並且實例化,第一個是名稱,url_prefix='/db'表示路由選擇從db開始,下面就像普通的app文件一樣,定義路由方法即可。

我們看一下run.py:

from flask import Flask
from bp import bp
app = Flask(__name__)
app.register_blueprint(bp)
if __name__ == '__main__':
    app.run(debug=True)

運行,用瀏覽器打開localhost:5000/db/index,就可以看到blueprint model兩個字母了。簡單吧。


場景2

我的應用需要操作數據庫,我才用了flask-mysql的擴展,但我想模塊化,不想在run.py中操作數據庫。

答:

我們可以這樣,編寫一個ext.py

from flaskext.mysql import MySQL  
mysql = MySQL()

接着在run.py中這樣:

app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = 'sa'
app.config['MYSQL_DATABASE_DB'] = 'zhihu'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'

mysql.init_app(app)

接着在ext.py中操作數據庫了:

def db():
    cursor = mysql.get_db().cursor()
    cursor.execute('select * from users limit 5')
    data = cursor.fetchall()
    for d in data:
        print(d[3], SEX[d[4]])
    return jsonify({'code': 200})

是不是很簡單。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章