Python中PyMySQL的基本操作

 更新时间:2022年11月07日 10:20:36   作者:尛刀石  
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库,这篇文章主要介绍了Spring DI依赖注入详解,需要的朋友可以参考下

简介

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()

到此这篇关于PyMySQL的基本操作的文章就介绍到这了,更多相关PyMySQL操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现手机通讯录搜索功能

    python实现手机通讯录搜索功能

    这篇文章主要介绍了python模仿手机通讯录搜索功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Python数据分析基础之异常值检测和处理方式

    Python数据分析基础之异常值检测和处理方式

    这篇文章主要介绍了Python数据分析基础之异常值检测和处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Django传递数据给前端的3种方式小结

    Django传递数据给前端的3种方式小结

    Django从后台往前台传递数据时有多种方法可以实现,下面这篇文章主要给大家介绍了关于Django传递数据给前端的3种方式,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 基于python不同开根号的速度对比分析

    基于python不同开根号的速度对比分析

    这篇文章主要介绍了基于python不同开根号的速度对比分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python中Django的URL反向解析

    Python中Django的URL反向解析

    这篇文章主要介绍了Python中Django的URL反向解析,url反向解析是指在视图或模板中,用path定义的名称来动态查找或计算出相应的路由,本文提供了部分实现代码与解决思路,需要的朋友可以参考下
    2023-09-09
  • pandas中.loc和.iloc以及.at和.iat的区别说明

    pandas中.loc和.iloc以及.at和.iat的区别说明

    这篇文章主要介绍了pandas中.loc和.iloc以及.at和.iat的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 在python中使用[[v]*n]*n遇到的坑及解决

    在python中使用[[v]*n]*n遇到的坑及解决

    这篇文章主要介绍了在python中使用[[v]*n]*n遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 不要用强制方法杀掉python线程

    不要用强制方法杀掉python线程

    本文给大家分享的是走着的一些强制杀掉python线程经验教训,如果你使用强制手段干掉线程,那么很大几率出现意想不到的bug。 请记住一点,锁资源不会因为线程退出而释放锁资源 !
    2017-02-02
  • Python第三方库OS库方法实操

    Python第三方库OS库方法实操

    这篇文章主要给大家介绍了关于Python第三方库OS库的相关资料,os库主要是对文件和文件夹进行操作,在Python中对⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能,需要的朋友可以参考下
    2024-06-06
  • python+Tkinter+多线程的实例

    python+Tkinter+多线程的实例

    这篇文章主要介绍了python+Tkinter+多线程的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论