目录
安装环境
安装步骤
在电脑中安装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()
这两种方式没有太大区别,看个人喜好。