当前位置:网站首页>用pymysql封装项目通用的连接和查询
用pymysql封装项目通用的连接和查询
2022-07-23 14:32:00 【馆主阿牛】
个人简介
- 作者简介:大家好,我是阿牛,全栈领域新星创作者。
- 支持我:点赞+收藏️+留言
- 系列专栏:拳打脚踢数据库
- 格言:要成为光,因为有怕黑的人!

前些天发现了一个比较好的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。
点击跳转到网站:人工智能学习
前言
一个项目通常都需要有数据库,而对于python这门语言,除了一些框架自带orm或者扩展的orm(像django自带orm,flask则需要扩展的orm),使用orm必然有他的好处,但毫无疑问你要花时间学习这个orm,那么接下来阿牛带你们用pymysql简单分装一个通用的连接,关闭和查询!
pymysql 介绍与安装
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
在终端使用以下指令安装:
pip3 install PyMySQL
pymysql 的使用
import pymysql
# 打开数据库连接,password为你的数据库密码,db是数据库名
db = pymysql.connect(host="127.0.0.1",
user="root",
password=" ",
db=" ",
charset="utf8")
# 使用 cursor() 方法创建一个游标对象
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print("Database version : %s " % data)
#关闭数据库连接
db.close()
password为你的数据库密码,db是数据库名,操作前请先建立好你的mysql数据库。

如图,我连接成功并且获取到了我数据库的版本!
方法execute执行我们的sql语句。
在获取执行的结果时,可以指定获取的结果的条数,可以使用的选项如下:
fetchone() # 取得检索结果的一条数据
fetchmany(n) # 取得检索结果的n条数据
fetchall() # 取得检索结果的所有数据
需要注意的是,与读取文件时的指针类似,如果在同一段代码中,先使用fetchone()获取检索结果的第一条数据,然后再使用fetchmany(2)的话,指针会在检索结果的当前位置向后读取执行结果,而不会从头开始重新读取检索的结果。
获取到的结果是元组。,如下图:

封装项目通用的连接和查询
请自行写入密码和数据库
import pymysql
# 创建连接
#return: 连接,游标
def get_conn():
# 创建连接
conn = pymysql.connect(host="127.0.0.1",
user="root",
password="",
db="",
charset="utf8")
# 创建游标
cursor = conn.cursor()# 执行完毕返回的结果集默认以元组显示
return conn, cursor
# 关闭游标,连接
def close_conn(conn, cursor):
cursor.close()
conn.close()
def query(sql,*args):
""" 封装通用查询 :param sql: :param args: :return: 返回查询到的结果,((),(),)的形式 """
conn, cursor = get_conn()
cursor.execute(sql,args)
res = cursor.fetchall()
close_conn(conn, cursor)
return res
因此,我们在查询时只需要调用query()函数就行,*args可以让其传入任意个参数或者不传参数,只需要sql语句中的占位符和参数个数对应就可以!
使用如下图所示
结语
只要你的sql过关,pymsql也可以帮助你完成项目!不一定需要使用orm哦!
如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。
边栏推荐
猜你喜欢
随机推荐
Failure analysis and solution of vscode PIO creation project
树
Shell | 查看进程的方法的不完全总结
Detailed explanation of SQL bool blind note and time blind note
Pinduoduo app product details interface to obtain activity_ ID value (pinduoduo activity_id interface)
keras——accuracy_ Score formula
[web vulnerability exploration] SQL injection vulnerability
C语言基础篇 —— 2-4 指针的数据类型含义和强制类型转换的解析
CSR、SSR 与 SSG
Thoughts on software quality system
职场3道坎:年薪30万、50万、100万
July training (day 23) - dictionary tree
封玩家IP和机器码以及解开被封的教程
林志颖仍在重症室 将进行二轮手术:警方称其并未系安全带
Function secondary development / plug-in development of JMeter (detailed version)
Pymoo学习 (2):带约束的双目标优化问题
软件质量体系之思
First deep search and first wide search of graph (realized by three methods)
Repository XXX does not have a Realease file「建议收藏」
Eureka notes









