Python 解析pymysql模块操作数据库的方法
作者:cici_vivi 发布时间:2021-05-07 07:46:13
pymysql 是 python 用来操作MySQL的第三方库,下面具体介绍和使用该库的基本方法。
1.建立数据库连接
通过 connect 函数中 parameter 参数 建立连接,连接成功返回Connection对象
import pymysql
#建立数据库连接
connection = pymysql.connect(host = 'localhost',
user = 'root',
password = '123456',
database = 'mydb',
charset = 'utf8'
)
#print(connection)
pymysql.connect()函数中常用的连接参数有以下几种:
host:数据库主机名或者ip地址
port:端口号
user:数据库的账号
password 或 passwd:数据库的密码
database 或 db:数据库的名字
charset:编码方式
Connection对象的重要方法:
close() 关闭数据库连接
commit() 提交数据库事物
rollback() 回滚数据库事务
cursor() 获得 Cursor游标对象
2.创建游标
一个Cursor游标对象,暂时保存了SQL操作所影响到的数据,相同的数据库连接创建的游标所引起的数据变化,会马上反应到同一连接中的其它游标对象。但是不同数据库连接中的游标对象,是否能及时反映出来,则与数据库事物管理有关。
Cursor对象基本方法和属性:
execute(operation,[parameters])
执行一条SQL语句,operation时SQL语句,parameters是其参数。返回值是整数,表示执行SQL语句影响的行数
executemany(operation,[parameters])
批量执行SQL语句
callproc(procname,[parameters])
执行存储过程,procname是存储过程名
使用execute()和executemany()方法查询后,通过以下提取方法提取结果集
fetchone()
从结果集当中返回一条记录的序列,无则返回None
fetchmany([size=cursor.arraysize])
从结果集当中返回小于或等于size的记录序列,无则返回空序列,size默认是整个游标的行数
fetchall()
从结果集当中返回所有的行数
3.建立数据库(这里我使用的是NaviCat)
创建一个名为pydb的数据库,表名为user,字段name和userid
数据的查找
#建立数据库连接
connection = pymysql.connect(host = 'localhost',
user = 'root',
password = '123456',
database = 'mydb',
charset = 'utf8'
)
#print(connection)
try:
#创建游标对象
with connection.cursor() as cursor:
#执行SQL操作
sql = 'select name, userid from user where userid >%(id)s'
cursor.execute(sql, {'id':0})
#提取数据集
result_set = cursor.fetchall()
for row in result_set:
print('id:{0} - name:{1}'.format(row[1],row[0]))
#游标自动关闭
finally:
#关闭连接
connection.close()
数据插入
#数据增加
connection = pymysql.connect(host = 'localhost',
user = 'root',
password = '123456',
database = 'mydb',
charset = 'utf8'
)
try:
with connection.cursor() as cursor:
sql = 'insert into user (userid,name) values (%s,%s)'
cursor.execute(sql,(3,'cc'))
#affectcount = cursor.execute(sql,(3,'cc'))
#print('影响的数据行数:{0}'.format(affectcount))
#提交数据库事务
connection.commit()
except pymysql.DatabaseError:
#数据库事务回滚
connection.rollback()
finally:
connection.close()
执行结果:
数据更新
#数据更新
connection = pymysql.connect(host = 'localhost',
user = 'root',
password = '123456',
database = 'mydb',
charset = 'utf8'
)
#print(connection)
try:
with connection.cursor() as cursor:
sql = 'update user set name = %s where userid > %s'
cursor.execute(sql,('Tom',2))
#提交事务
connection.commit()
print('更新成功')
except pymysql.DatabaseError as e:
connection.rollback()
print(e)
finally:
connection.close()
执行结果:
数据删除
#数据删除
connection = pymysql.connect(host = 'localhost',
user = 'root',
password = '123456',
database = 'mydb',
charset = 'utf8'
)
try:
with connection.cursor() as cursor:
sql = 'delete from user where userid = %s'
cursor.execute(sql,(1))
#提交事务
connection.commit()
print("删除成功")
except pymysql.DatabaseError as e:
connection.rollback()
print(e)
finally:
connection.close()
执行结果:
总的来说和java进行对比,在数据库的连接 和对
数据集进行的处理上,python体现的非常简洁,最主要易于使用和理解。人生苦短,我用python!
总结
以上所述是小编给大家介绍的Python 解析pymysql模块操作数据库的方法,希望对大家有所帮助!
来源:https://blog.csdn.net/zc666ying/article/details/104344740?
猜你喜欢
- 实例化对象名._类名__私有属性名 class Flylove:price = 123 def __init__(self):s
- RegExp对象的语义和使用:检查字符串匹配获取字符串中的部分内容在原字符串的基础上构建一个新的字符串(包括添加、删除和修改)构建一个Reg
- 本文实例讲述了php实现的一段简单概率相关代码。分享给大家供大家参考,具体如下:<?phpfor($i=1;$i<100000;
- 前言优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行C
- 学习目的 学会SQL中的占位符用法 在鲸鱼这几天忙死了,好几天没写了,真对不起各位。这几天让XHTML闹得不开心,虽然以前也知道这个,但没太
- 解析接口返回数据1、把json格式的数据转换成单个{key,value}的形式,并把每个dict存入listdef parse(self,d
- Server对象提供对服务器上访问的方法和属性.大多数方法和属性是作为实用程序的功能提供的。语法:Server.property|metho
- 一提起Google的产品,大多数人可能都会想到用一个词来形容,“简洁”。简单得来又实用,这就是Google的产品设计方针了。Jon Wile
- 简单试用了一下IE8后,今天相对有时间点,对IE8、IE7、IE6、Firefox2.0.0.12做了简单的一些CSS HACK测
- 1. 导入包我们这次的任务是随机生成一些离散的点,然后用直线(y = w *x + b )去拟合首先看一下我们需要导入的包有torch 包为
- 先说明一下,现在网上有一些功能很强大的动画类,如MOOFX之类,我为什么要写这三个动画函数?因为在写zDialog时需要且只需要用到透明度渐
- 写这个文章绝对是偶然的偶然的机会,前年等一回的 元旦节,和 老婆上街 溜达,猛然想起买上一张福利彩票,结果屁都没有中上,开春第一
- Conditional-CSS允许你针对单一浏览器或浏览器组写出有逻辑条件的可维护的特定的CSS声明。使CSS针对特定的浏览器。简化你对CS
- MySQL字符集出错的解决方法:错误案例: Illegal mix of collations (gbk_chinese_ci,I
- 首先我们解压$ unzip p8202632_10205_LINUX.zip解压后我们会发现多出了个文件夹,他是:Disk1,进入Disk1
- 一、 迪杰斯特拉算法思想Dijkstra算法主要针对的是有向图的单元最短路径问题,且不能出现权值为负的情况!Dijkstra算法类似于贪心算
- <html><head><title>过滤空格</title><SCRIPT LANG
- 上次在“给网页添加打印按钮”一文中,有一段代码是“复制本文链接到剪贴板”js脚本,很可惜只能在IE中使用。这次在“淘宝网在线充值中心 - 荆
- 图形由json格式加载,可以灵活配置。下一步是完善用户的操作,做这个感觉还是蛮有意思的。呵呵。截图:部分源码:<script type
- 用XMLHTTP Post Form时的表单乱码有两方面的原因——Post表单数据时中文乱码;服务器Response被XMLHTTP不正确编