flask-mysql配置

来源:互联网 发布:中医体质辨识软件 编辑:程序博客网 时间:2024/06/06 19:44

Python-flask MySQL配置


最近在实习做公司的一个小项目,麻雀虽小,五脏俱全。虽然我投的是算法岗位,但刚进来让我做后台服务器,让我感觉压力还是蛮大的。我开发的服务器是用python-flask来做的,flask在这段时间开发中,让我学习到了很多,终于理解微小的含义。

场景1

flask默认只有一个run.py文件,如果现在没有功能还不完善,我想后期扩充功能,但又不想修改run.py文件,该怎么办?

答:使用蓝图。

蓝图的的定义是这样的,可以将不同的模块独立分开,采用不同的路由,这样就可以模块化应用。

配置如下:

首先蓝图模块bp.py:

from flask import Blueprint, jsonifybp = 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 Flaskfrom bp import bpapp = 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})

是不是很简单。

0 0