python中MySQL(pymsql)的使用基础

news/2025/11/10 15:09:52/文章来源:https://www.cnblogs.com/chowstudy/p/19207008
  1. 要在python中使用MySQL数据库,首先需要安装pymysql,如果需要使用MySQL连接池,还需要安装dbutils
  pip install pymysqlpip install dbutils
  1. 在项目目录中的utils或config目录中(没有可以新建一个)新建一个db.py文件(文件名可以自己随便起)
# 1. 先引入pymysql
import pymysql
# 2. 引入数据库工具
from dbutils.pooled_db import PooledDB# 3. 数据库配置
db_config = {'host': '192.168.1.119','port': 3306,'user': 'root','passwd': 'root','db': 'refresh_orders','charset': 'utf8'}# 4. 创建连接池
try:mysql_pool = PooledDB(creator=pymysql,  # 使用链接数据库的模块maxconnections=6,  # 连接池允许的最大连接数,0和None表示不限制连接数mincached=2,  # 初始化时,链接池中至少创建的空闲的链接,0表示不创建maxcached=5,  # 链接池中最多闲置的链接,0和None不限制maxshared=3,  # 链接池中最多共享的链接数量,0和None表示blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待;True表示阻塞,False表示不等待然后报错setsession=[],  # 开启会话ping=0,  # ping MySQL服务端,检查是否服务可用**db_config   # 数据库连接参数)
except Exception as e:print(e)# 5. 定义方法(函数)
def get_conn():# 获取连接return mysql_pool.connection()def fetch_one(sql, args=None):# 获取单条数据conn = get_conn()cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)cursor.execute(sql, args)result = cursor.fetchone()close_conn(conn, cursor)return resultdef fetch_all(sql, args=None):# 获取单条数据conn = get_conn()cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)cursor.execute(sql, args)result = cursor.fetchall()close_conn(conn, cursor)return resultdef create(sql, args=None):# 创建数据conn = get_conn()cursor = conn.cursor()try:cursor.execute(sql, args)  # 执行sql语句conn.commit()   # 提交return cursor.lastrowid   # 返回插入数据的idexcept Exception as e:print(e)finally:close_conn(conn, cursor)"""
关闭连接
"""
def close_conn(conn,cursor):if cursor:cursor.close()if conn:conn.close()
  1. 在项目中其它地方需要使用的地方先引入db,然后调用相应的函数(方法)
from flask import Blueprint, request,session,jsonify,render_template,redirect
from utils import dbfrom flask import Blueprint, request,session,jsonify,render_template,redirect
from utils import db
from utils import cacheod = Blueprint('order',__name__)ADMIN = 0
USER = 1@od.route('/order/list')
def list():# 从cookie中获取用户信息user = session.get('user_info')data_list = []if user['role'] == ADMIN:# data_list = db.fetch_all("select * from orders")# 连表查询 left joindata_list = db.fetch_all("select o.id, o.url, o.count, o.status, u.real_name from orders o left join users u on o.user_id=u.id")else:# 连表查询 left joindata_list = db.fetch_all("select o.id, o.url, o.count, o.status, u.real_name from orders o left join users u on o.user_id=u.id where o.user_id=%s", [user['id']])status_map = {0: {'text':'待处理', 'class':'info'}, 1: {"text":'处理中...', 'class':'warning'}, 2: {"text":'已完成', 'class':'success'}, 3: {"text":'失败', 'class':'danger'}}return render_template('order_list.html', order_list=data_list, status_map=status_map)@od.route('/order/create', methods=['GET','POST'])
def create():if request.method == 'POST':url = request.form.get('url')count = request.form.get('count')if not url or not count: return render_template('order_create.html', error='数据不完整, 请填写完整的订单信息')user = session.get('user_info')sql = "insert into orders(url,count,status,user_id) values(%s,%s,0,%s)"order_id = db.create(sql, [url, count, user['id']])print(order_id)# todo: 写入redis队列cache.push_task_queue(order_id)return redirect('/order/list')return render_template('order_create.html')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/961434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水箱液位pid控制仿真,综合一阶滞后对象+阀门流量特性+不同厂家pid算法

页面截图页面代码 `水箱液位 PID 控制仿真系统:root { --gap: 8px; --panel-bg: #f7fbff; --accent: #0b74de; --muted: #666; --border: #e0e0e0 } \3c pre>\3c code>* { box-sizing: border-box; margin: 0; p…

DeepSeek大模型应用与实践 掌握的知识内容

DeepSeek大模型应用与实践(12) 任务 1:DeepSeek 大模型(一) 。安全生产、交通安全、消防 安全 1.AI 大模型的发展、推理大模 型 DeepSeek 介绍 2.DeepSeek 使用方法介绍 3.Markdown格式方法应用实战 任务 1:Deep…

2025年山东视保姆公司综合实力榜单:视保姆眼镜公司/视保姆3V疗法/视保姆镜架源头企业精选

中国视力健康管理行业正经历从单一器械向系统干预的技术跨越,其中生物科技芯片的应用成为行业创新焦点。 据相关数据显示,中国视力健康管理市场规模持续增长,技术创新型企业占比逐年提升。随着生物科技与眼视光领域…

AI大模型高级应用 掌握的知识内容

AI大模型高级应用(9) 任务 1:AI 大语言模型原理与 提示词工程(一)。安全生产、 交通安全、消防安全 1.大语言模型基础原理介绍 2.提示词工程详解应用实战 任务 1:AI 大语言模型原理与 提示词工程(二) 3.智能体…

会议中心-贪心/dp

P3626 会议中心 - 贪心/dp 题意 给定 \(m\) 条线段的 \(l\) 和 \(r\),求最大不重叠线段数,和满足线段数最多情况下最小字典序。 思路 写题历程: 第一问很容易想到贪心,\(n \log n\) 可得,但我贪心在第二问一点思路…

安卓app自动化操作方案实现

目录PC群控实机方案准备uiautomator2代码例子weditor进行页面分析adb+wifi控制手机方案总结脱离PC方案准备hamibot代码例子任务调度原理方案总结 PC群控实机方案 准备 python uiautomator2 实现自动化操作 使用weditor…

详细介绍:热门编程语言的排名及开源贡献比例表格-截至2025年10月

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

二进制题

https://xinyoudui.com/ac/contest/74700BC520008E907259A3/problem/42353 妈妈我被二进制题区分了。 首先考虑为啥它要给你前缀,不难发现最值只会由 \(a_n\) 贡献,利用一定的计数技巧可以在 \(O(k)\) 的复杂度内求出…

人工智能工程技术,掌握的知识内容

人工智能工程技术(9) 任务 1:人工智能概述(一)。安 全生产、交通安全、消防安全 1、人工智能的概念介绍 2、人工智能的发展历史介绍 3、人工智能开发环境应用实战 任务 1:人工智能概述(二) 4、开发环境: Hello AI…

SQLite 连接串说明

SQLite 连接串说明Basic Data Source=c:\mydb.db;Version=3;Version 2 is not supported by this class library. SQLite In-Memory Database An SQLite database is normally stored on disk but the database can al…

SRS(simple-rtmp-server) 一快速环境搭建

SRS(simple-rtmp-server) 一快速环境搭建 介绍了如何使用Docker快速部署SRS流媒体服务器,拉取镜像、启动服务、通过FFmpeg推流及访问控制台的过程。1.拉取docker镜像:docker pull ossrs/srs:dev2.启动镜像docker run…

SQL中GROUP BY WITH ROLLUP和GROUPING 函数的使用

WITH ROLLUP:是 SQL 的分组汇总扩展,用于在分组的基础上生成各级别的汇总行,能方便地得到每个分组以及所有分组的总计数据。 GROUPING 函数:用于标识某一行是否是由 ROLLUP 生成的汇总行,返回 0 表示是原始数据行…

⚡️ 高性能绿色Markdown文档阅读器:Litho Book技能架构深度解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:深度学习实战:从图像分类到自然语言处理的完整指南

完整教程:深度学习实战:从图像分类到自然语言处理的完整指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

【完整源码+内容集+部署教程】 黄瓜叶片检测系统源码和数据集:改进yolo11-RVB

【完整源码+内容集+部署教程】 黄瓜叶片检测系统源码和数据集:改进yolo11-RVB2025-11-10 14:58 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow…

EasyGBS/EasyNVR高并发适配!PostgreSQL部署指南

EasyGBS/EasyNVR高并发适配!PostgreSQL部署指南在某些部署场景中,例如当客户新部署的EasyGBS或EasyNVR系统需要接入大量设备,或面临高并发访问压力时,我们默认采用的SQLite数据库可能因性能限制而不再适用。为确保…

国产化Word处理控件Spire.Doc教程:使用Java将RTF文件转换为PDF的全面教程

RTF 格式广泛用于文本格式化、字体样式和图片插入,而 PDF(Portable Document Format)则是跨平台文档存储和传输的标准格式,具有高度的兼容性和安全性。本教程将深入介绍如何使用 Spire.Doc for Java 库在 Java 中将…

详细介绍:K8S(七)—— Kubernetes Pod 进阶配置与生命周期管理全解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年门卫室岗亭源头厂家综合实力榜单:形象岗亭/小区值班岗亭/钢结构吸烟亭源头厂家精选

门卫室岗亭作为城市管理和企业安保的第一道防线,其市场需求与城市基础设施建设同步增长。数据显示,2024年全国安防行业总产值中,实体防护设施占比约25%,其中标准化与定制化岗亭需求显著提升。本文基于对企业生产能…

2025 11 10

第20场 (为了完整把前天的一部分粘贴过来了T1 秒了 T2 我不行了,啥性质都分析出来了,就是没有想到把第 \(i\) 个物品合并放到第 \(i+1\) 里去,那我能说啥呢见过的套路不够多加上当时的脑袋比较混沌,加上自己比较蠢…