博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python pymysql——Mysql数据库Python化操作
阅读量:7175 次
发布时间:2019-06-29

本文共 3395 字,大约阅读时间需要 11 分钟。

前言

Mysql数据库是目前较为流行使用的数据库之一,众多编程语言都有对其的支持扩展包接口,当然于python而言亦有专门扩展库以便帮助开发者对Mysql数据库进行相应的操作。其中,由于python版本不同,对Mysql支持的库也有区别,目前使用较为普遍的有pymysql和MySQLdb,两者功能上无明显差异,只是前者支持python3.X版本,后者应用于python2.X版本。

在此以python3.X版本为平台基础,对pymysql的相关基础及使用方法作简单介绍。

安装

直接使用pip命令进行安装

pip install pymysql

概念基础

在pymysql中(当然,其他SQL数据库接口也一样),主要有三个基本概念:连接对象、游标对象以及查询SQL select语句的结果。

1)连接对象:代表一个到数据库的连接,它是提交和回滚操作的接口,提供了数据库软件包的细节信息,并能生成游标对象。

2)游标对象:代表了需提交执行的SQL语句,同时它也可以被用来访问和遍历SQL语句的执行结果。

3)查询SQL select语句的结果:SQL select语句的执行结果在python是一个嵌套的序列,它代表了数据库表中的行。

使用方法

1)初始化准备

import pymysql# 初始化连接配置ConnectConfig = {     'host': 'localhost',     'port': 3306,     'user': 'root',     'passwd': '******',     'charset': 'utf8',     'db': 'tesdbt' }# 创建连接对象db = pymysql.connect(     host=ConnectConfig['host'],      port=ConnectConfig['port'],     user=ConnectConfig['user'],     passwd=ConnectConfig['passwd'],      charset=ConnectConfig['charset'],      db=ConnectConfig['db'] )# 创建游标对象cursor = db.cursor()

2)执行SQL语句

示例1——创建表和添加记录

# 创建数据表sql="create table people(name char(30),job char(10),pay int(4));"cursor.execute(sql)
# 添加记录cursor.execute('insert into people values(%s,%s,%s);',('Bob','dev',50000))# 或者也可以一次性添加多条记录rows = [('Sue','mus',70000),('Ann','adm',60000)]cursor.executemany('insert into people values(%s,%s,%s);',rows)
# 操作完成后还需要进行事务提交以便数据库保存db.commit()# 此外连接对象还有事务回滚操作:db.rollback()
# 最后关闭游标对象和连接对象cursor.close()db.close()

示例2——查询、更新和删除记录

# 查询people表中所有记录cursor.execute('select * from people;')result = cursor.fetchall()for row in result:    print(row)
""" Output: ('Bob','dev',50000) ('Sue','mus',70000) ('Ann','adm',60000) """
# 更新people表中职务为adm的人员工资增加12000cursor.execute('update people set pay=pay+12000 where job="adm";')cursor.execute('select * from people where job="adm";')db.commit();result = cursor.fetchall()print(result)
"""Output: [('Ann','adm',72000)] """
# 删除people表中姓名为Bob的记录cursor.execute('delete from people where name="Bob";')cursor.execute('select * from people;')db.commit();result = cursor.fetchall()for row in result:    print(row)
"""Output: ('Sue','mus',70000) ('Ann','adm',72000) """

3)其他使用

①cursor.rowcount属性:返回执行完SQL语句后所影响的行数

# 使用rowcount获取所影响的行数cursor.execute('select * from people;')print(cursor.rowcount)  # Output:3

②cursor.description属性:返回执行完SQL查询语句后所得到的字段名和字段属性

# 使用description获得表字段名和字段属性cursor.execute('select * from people;')print(cursor.description)
""" Output: (('name',None,None,None,None,None,None),('job',None,None,None,None,None,None), ('pay',None,None,None,None,None,None))
# 具体列属性描述请参阅相关API说明 """
# 格式化表字段名cursor.execute('select * from people;')colnames = [desc[0] for desc in cursor.description]print(colnames)
""" Output: ['name','job','pay'] """

③cursor.fetchall():返回执行完SQL查询语句后得到结果的列表(元素为行的元组形式)

   cursor.fetchone():返回执行完SQL查询语句后得到结果的第一行

   cursor.fetchmany(n):返回执行完SQL查询语句后得到结果的前n行

这里要注意的是fetch获得的行是根据游标来定位的,就是说每一次调用fetch相关行数,游标就会移动,下一次再调用fetch时从上次游标的位置开始获得记录,当其已经到表末尾时,则返回空序列。

# 连续调用fetch方法cursor.execute('select * from people;')rows1 = cursor.fetchall()print(rows1)  # Output:[('Bob','dev',50000),('Sue','mus',70000),('Ann','adm',60000)]rows2 = cursor.fetchall()print(rows2)  # Output:[]

④cursor.scroll(num,mode):控制游标对象的移动以便重定fetch方法

# 使用scroll方法调整游标位置cursor.scroll(1,mode='relative')  # 相对当前位置顺序移动cursor.scroll(2,mode='absolute')  # 相对绝对位置顺序移动

 


以上便是对python数据库操作的pymysql库一些简单介绍,希望对大家能有所帮助,如有什么问题欢迎大家留言学习交流。

如想深入了解学习pymysql欢迎查阅相关文档()

转载于:https://www.cnblogs.com/Unikfox/p/9241391.html

你可能感兴趣的文章
time命令小结
查看>>
kali 1.0.9a 启动Metasploit
查看>>
python 数字
查看>>
Android入门及环境搭建
查看>>
我的友情链接
查看>>
flume source channel sink
查看>>
Axis2+spring的webservice小例子
查看>>
Android UI系列-----ScrollView和HorizontalScrollView
查看>>
Mac OS X 背后的故事
查看>>
AgileEAS.NET敏捷开发平台及案例下载(持续更新)-索引
查看>>
修改hosts文件无效?附解决办法
查看>>
OpenCV编程->Haar训练(1)
查看>>
Oracle_071_lesson_p10
查看>>
Oracle_052_lesson_p2
查看>>
脱壳免杀技术大纲
查看>>
Spring Cache
查看>>
Linux下Mysql常用命令
查看>>
进阶-中小型网络构建-二层VLAN技术详解配实验步骤
查看>>
LVM逻辑卷管理
查看>>
java crm 进销存 websocket即时聊天发图片文字 好友群组 SSM源码
查看>>