flask-mysql配置

本文介绍了在实习期间使用Python Flask开发服务器时遇到的问题及解决方案。在场景1中,为了解决Flask应用功能扩充而不修改单一文件的问题,提出了使用蓝图的方法。在场景2中,详细阐述了如何使用flask-mysql扩展实现模块化的数据库操作,避免在run.py中直接操作数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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})

是不是很简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值