美文网首页
flask基础(二)

flask基础(二)

作者: 憧憬001 | 来源:发表于2019-01-25 12:20 被阅读0次

flask中的中间键(钩子函数)

  • before_first_request
    第一次请求才被调用(可用于缓存)

  • before_request
    请求之前被调用

  • after_request
    请求之后被调用(前面出错就不会执行)

  • teardown_request
    无论报不报错都会执行

from flask import Flask

app = Flask(__name__)


# 钩子函数

@app.before_request
def before():
    print('before request!')

@app.before_request
def before():
    print('before request!2')

# 第一次调用时才会被执行
@app.before_first_request
def before():
    print('before first!!!')

@app.route('/index/')
def index():
    # 1/0  # 如果取消这里的注释after_request就不会执行了
    return 'index'


# 程序在不出异常才会被调用
@app.after_request
def after(response):
    print('after request')
    return response

@app.after_request
def after(response):
    print('after request2')
    return response


@app.teardown_request
def teardown(exception):
    print('teardown request')

if __name__ == '__main__':
    app.run()


>>>>
# 第一次执行
before first!!!
before request!
before request!2
after request2
after request
teardown request

# 第二次执行
before request!
before request!2
after request2
after request
teardown request

使用pymysql连接数据库

import pymysql
from flask import Flask, request, g

app = Flask(__name__)


@app.before_request
def before():
    # 连接数据库
    conn = pymysql.connect(host='IP地址', port=端口 默认为3306, user='root', password='数据库密码', database='数据库名')
    # 获取游标
    cursor = conn.cursor()
    # g对象
    g.conn = conn
    g.cursor = cursor

@app.route('/sel_stu/')
def sel_stu():
    if request.method == 'GET':
        # 查询所有学生信息
        sql = 'select * from student'
        g.cursor.execute(sql)
        data = g.cursor.fetchall()
        print(data)
        return '查询成功'


@app.teardown_request
def teardown(exception):
    # 关闭游标
    g.conn.close()

if __name__ == '__main__':
    app.run(debug=True)

相关文章

网友评论

      本文标题:flask基础(二)

      本文链接:https://www.haomeiwen.com/subject/tnemjqtx.html