Flask 入门

本文介绍了如何在Python环境中安装和配置Flask框架,包括依赖包jinja2和werkzeug的安装,创建helloworld示例,处理客户端HTML请求,以及使用基础数据库连接和数据库连接池的方法。
摘要由CSDN通过智能技术生成

目录

安装环境

安装步骤

环境详解

web中"hello world"                                                                                 

客户端与html文件

html响应

​编辑请求数据

响应数据

    ​编辑数据库                                                                                                      

基础数据库连接                                                                                 

数据库连接池

方式一(函数)

方式二(对象)

安装环境

安装步骤

在电脑中安装flask包

pip3 install flask -i https://pypi.tuna.tsinghua.edu.cn/simple

成功

环境详解

        安装flask包的同时,会随着安装两个重要依赖包,分别为jinja2(模板引擎)和werkzeug(路由模块)。jinja2负责网页的渲染,werkeug负责网关  。 

web中"hello world"                                                                                 

from flask import  Flask

# 创建flask对象
app = Flask(__name__)

# 配置路由,实例中用列表存储路由和对应的方法
@app.route('/show/info')
def index():
    return 'hello world!'

if __name__ == '__main__':
    # 调用实例中方法run
    app.run()

客户端与html文件

html响应
@app.route('/index')
def index():
    return render_template('index.html')

从项目路径下找到templates文件夹中对应html文件,在flask对象中定义templates文件夹储存html文件

请求数据

以登录为例,flask默认请求为get,要添加post请求,

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return render_template('login.html')
    
    form = request.form
    if form.get('user') == 'libai' and form.get('pwd') == '123':
        return redirect('index')
    error = '用户名或密码错误'
    return render_template('login.html',error=error)
响应数据

返回html中展示error变量                                                                                                                  

return render_template('login.html',error=error)
<span style="color: red;">{{ error }}</span>

    数据库                                                                                                      

基础数据库连接                                                                                 

# 导入数据库连接模块
import pymsql
# 对数据库发起连接
    con = pymysql.connect(host="localhost",
                           port=3306,
                           user="root",
                           password="123456",
                           database="stock_db",
                           charset="utf8")
    # 游标
    cursor = con.cursor()
    sql = "select * from info;"
    cursor.execute(sql)
    sql_result = cursor.fetchall()
    # 关闭游标
    cursor.close()
    # 关闭数据库连接
    con.close()

数据库连接池

使用 Dbutils包来维护数据库连接。

方式一(函数)
import pymysql
from dbutils.pooled_db import PooledDB

# 初始化数据库链接池
POOL = PooledDB(
    creator=pymysql,      # 使用链接数据库的模块
    mincached=2,          # 初始化时,链接池中至少创建空闲的链接,0表示不创建
    maxconnections=6,     # 最大连接数
    blocking=True,        # 链接池中如果没有可用连接后,是否阻塞等待,true阻塞,false报错
    ping=0,               # 连接外部地址
    host='127.0.0.1',     # 数据库地址
    port=3306,            # 数据库端口
    user='root',          # 数据库账号
    password='123456',    # 数据库密码
    database='staffs',    # 数据库名称
    charset='utf8',

)

def fetchall(sql,*args):
    conn = POOL.connection()
    cursor = conn.cursor()
    cursor.execute(sql,args)
    result = cursor.fetchall()
    cursor.close()
    # 将数据库连接放回连接池
    conn.close()
    return result
方式二(对象)
import pymysql
from dbutils.pooled_db import PooledDB

class Conn():
    def __init__(self):
        # 初始化数据库链接池
        self.POOL = PooledDB(
            creator=pymysql,  # 使用链接数据库的模块
            mincached=2,  # 初始化时,链接池中至少创建空闲的链接,0表示不创建
            maxconnections=6,  # 最大连接数
            blocking=True,  # 链接池中如果没有可用连接后,是否阻塞等待,true阻塞,false报错
            ping=0,  # 连接外部地址
            host='127.0.0.1',  # 数据库地址
            port=3306,  # 数据库端口
            user='root',  # 数据库账号
            password='123456',  # 数据库密码
            database='staffs',  # 数据库名称
            charset='utf8',
    
        )
    #  打开数据库连接
    def open(self):
        conn = self.POOL.connection()
        cursor = conn.cursor()
        return conn,cursor
    
    def fetchall(self,sql, *args):
        conn = self.POOL.connection()
        cursor = conn.cursor()
        cursor.execute(sql, args)
        result = cursor.fetchall()
        cursor.close()
        # 将数据库连接放回连接池
        conn.close()
        return result
    
    # 关闭数据库连接,并放回链接池
    def close(self,cursor,conn):
        cursor.close()
        # 将数据库连接放回连接池
        conn.close()

这两种方式没有太大区别,看个人喜好。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值