Python中PyMySQL的基本操作
作者:尛刀石 发布时间:2024-01-15 20:57:11
标签:PyMySQL,操作
简介
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
pip install PyMySQL
pymysql github地址
下面看下PyMySQL的基本操作,
1、查找数据
import pymysql
# 简单的查找
# 连接数据库
conn = pymysql.connect(host='127.0.0.1', user='root', password='******', database='authoritydb')
# cursor=pymysql.cursors.DictCursor,是为了将数据作为一个字典返回
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = 'select id,name from userinfo where id = %s'
# row返回获取到数据的行数
# 不能将查询的某个表作为一个参数传入到SQL语句中,否则会报错
# eg:sql = 'select id,name from %s'
# eg:row = cursor.excute(sql, 'userinfo') # 备注:userinfo是一个表名
# 像上面这样做就会报SQL语法错误,正确做法如下:
row = cursor.execute(sql, 1)
# fetchall()(获取所有的数据),fetchmany(size)(size指定获取多少条数据),fetchone()(获取一条数据)
result = cursor.fetchall()
cursor.close()
conn.close()
# 最后打印获取到的数据
print(result)
# 补充
# 传入多个数据时
sql = 'select id,name from userinfo where id>=%s and id<=%s'
row = cursor.executemany(sql, [(1, 3)])
# 以字典方式传值
sql = 'select id,name from userinfo where id>=%(id)s or name=%(name)s'
rows = cursor.execute(sql, {'id': id, 'name': name})
# -------------------------------------------------
import pymysql
# 复杂一点的查找,与MySQL的语句格式一样
connect = pymysql.connect(host='localhost', user='root', password='****', database='authoritydb')
cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
username = input('username: ')
sql = 'select A.name,authorityName from (select name,aid from userauth left join userinfo on' \
' uid=userinfo.id where name=%s) as A left join authority on authority.id=A.aid'
row = cursor.execute(sql, username)
result = cursor.fetchmany(row)
cursor.close()
connect.close()
print(result)
# 调用函数
import pymysql
# 函数已经在mysql数据库中创建,这里只调用
# 函数的创建请访问后面的网址(https://blog.csdn.net/qq_43102443/article/details/107349451).
# in (指在创建函数时指定的参数只能输入)
connect = pymysql.connect(host='localhost', user='root', password='******', database='schooldb')
cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
r = cursor.callproc('p2', (10, 5))
result_1 = cursor.fetchall()
# 这个函数返回两个结果集
# 换到另一个结果集,在进行获取值
cursor.nextset()
result_2 = cursor.fetchall()
cursor.close()
connect.close()
print('学生:', result_1, '\n老师:', result_2)
# out (指在创建函数时指定的参数只能输出)
connect = pymysql.connect(host='localhost', user='root', password='*****', database='schooldb')
cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
# 调用函数
r = cursor.callproc('p3', (8, 0))
result_1 = cursor.fetchall()
# 查询函数的第二个参数的值(从零开始计数)
cursor.execute('select @_p3_1')
result_2 = cursor.fetchall()
cursor.close()
connect.close()
print(result_1, '\n', result_2)
# inout(指在创建函数时指定的参数既能输入,又能输出)
connect = pymysql.connect(host='localhost', user='root', password='l@l19981019', database='schooldb')
cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
r = cursor.callproc('p4', (10, 0, 2))
result_1 = cursor.fetchall()
cursor.execute('select @_p4_1,@_p4_2')
result_2 = cursor.fetchall()
cursor.close()
connect.close()
print(result_1, '\n', result_2)
2、添加数据
用PyMySQL进行数据的增、删、改时,记得最后要commit()进行提交,这样才能保存到数据库,否则不能
connect = pymysql.Connect(host='localhost', user='root', password='******', database='schooldb')
cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
student_id, course_id, number = input('student_id,course_id,number[eg:1 2 43]: ').split()
sql = 'insert into score(student_id,course_id,number) values(%(student_id)s,%(course_id)s,%(number)s)'
rows = cursor.execute(sql,{'student_id': student_id, 'course_id': course_id, 'number': number})
# 这里一定要提交
cursor.commit()
cursor.close()
connect.close()
3、删除数据
connect = pymysql.Connect(host='localhost', user='root', password='******', database='schooldb')
cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
student_id = input('student_id: ')
sql = 'delete from student where sid=%s'
rows = cursor.execute(sql, student_id)
# 这里一定要提交
cursor.commit()
cursor.close()
connect.close()
4、更改数据
connect = pymysql.Connect(host='localhost', user='root', password='******', database='schooldb')
cursor = connect.cursor(cursor=pymysql.cursors.DictCursor)
id, name = input('id, name: ').split()
sql = "update userinfo set name=%s where id=%s"
rows = cursor.executemany(sql, [(name, id)])
# 这里一定要提交
cursor.commit()
cursor.close()
connect.close()
来源:https://blog.csdn.net/qq_43102443/article/details/107394794


猜你喜欢
- 网上找了半天 不是dataframe转化成array的就是array转化dataframe,所以这里给汇总一下,相互转换的python代如下
- 一、我们对XML的读取进行一波演示import xml.dom.minidom#负责解析xml文件的包from xml.dom.minido
- 我就废话不多说了,大家还是直接看代码吧~package mainimport ("encoding/json""
- 数据库事务-锁机制1.什么是锁锁,其实就是一个内存种的结构,在事务还没有来之前是没有锁存在的。在事务未开始前只有一条记录,是没有锁和记录之间
- Python提取html中文本到txt正则去标签方式# -*- coding: utf-8 -*-import redef html_tag
- <div> <table width="320" cellpadding="0"
- 生成随机密码这件事情用python来干确实相当的方便,优美的string方法加上choice简直是绝配make_password.py###
- 用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击、双击、点击鼠标右键、拖拽等等。而selenium给我们提供
- 1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建
- 【错误原因】:mysql_query执行超时.【解决办法】:修改php.ini中的 max_execution_time的值,默认为300,
- Golang调度机制最近抽空研究、整理了一下Golang调度机制,学习了其他大牛的文章。把自己的理解写下来。如有错误,请指正!!!golan
- 1、TransBigData简介TransBigData是一个为交通时空大数据处理、分析和可视化而开发的Python包。TransBigDa
- php遍历一个文件夹内的所有文件和文件夹,并删除所有文件夹和子文件夹下的所有文件的代码,通过递归方式实现达到清空一个目录的效果,代码简单实用
- 最近了解了下repaint和reflow的相关知识,觉得在页面重构过程中就应该考虑前端开发(js)人员对dom进行操作,能够减轻客户浏览器的
- 本文实例讲述了PHP删除数组中指定值的元素。分享给大家供大家参考,具体如下:测试数组如下://这是一个测试数组$testArr = arra
- 近日在项目中遇到一个问题: 如何在报表中统计JSON格式存储的数据?例如有个调查问卷记录表,记录每个问题的答案。 其结构示意如下(横表设计)
- 贪吃蛇游戏是经典手机游戏,既简单又耐玩。通过控制蛇头方向吃蛋,使得蛇变长,从而获得积分。在诺基亚时代,风靡整个手机界,今天我们来看看另类的,
- 一、线程池简介传统多线程方案会使用“即时创建,即时销毁”的策略。尽管与创建进程相比,创建线程的时间已
- 从MySQL支持Unicode后,为了与时俱进,我们的web程序也开始考虑用UTF8了。其实UTF8也用了好几年了,程序基本能跑,没什么大问
- CURLOPT_RETURNTRANSFER 选项:curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);如