Python操作MySQL数据库的方法


Posted in Python onJune 20, 2018

pymsql

pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。

下载安装

pip3 install pymysql

使用操作

1、执行SQL

import pymysql
# 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
# 创建游标
cursor = conn.cursor()
# 执行SQL,并返回收影响行数
effect_row = cursor.execute("update hosts set host = '1.1.1.2'")
# 执行SQL,并返回受影响行数
#effect_row = cursor.execute("update hosts set host = '1.1.1.2' where nid > %s", (1,))
# 执行SQL,并返回受影响行数
#effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
# 提交,不然无法保存新建或者修改的数据
conn.commit()
# 关闭游标
cursor.close()
# 关闭连接
conn.close()

2、获取新创建数据自增ID

import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor()
cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
conn.commit()
cursor.close()
conn.close()
# 获取最新自增ID
new_id = cursor.lastrowid

3、获取查询数据

import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
cursor = conn.cursor()
cursor.execute("select * from hosts")
# 获取第一行数据
row_1 = cursor.fetchone()
# 获取前n行数据
# row_2 = cursor.fetchmany(3)
# 获取所有数据
# row_3 = cursor.fetchall()
conn.commit()
cursor.close()
conn.close()

注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动

4、fetch数据类型

关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:

import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123', db='t1')
# 游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
r = cursor.execute("call p1()")
result = cursor.fetchone()
conn.commit()
cursor.close()
conn.close()

数据库补充

导出现有数据库数据:

mysqldump -u用户名 -p密码 数据库名称 >导出文件路径           # 结构+数据

mysqldump -u用户名 -p密码 -d 数据库名称 >导出文件路径       # 结构

导入现有数据库数据:

mysqldump -uroot -p密码  数据库名称 < 文件路径

MySQL中四种常用存储引擎的介绍

(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表

支持3种不同的存储格式,分别是:静态表;动态表;压缩表

静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格)ps:在取数据的时候,默认会把字段后面的空格去掉,如果不注意会把数据本身带的空格也会忽略。

动态表:记录不是固定长度的,这样存储的优点是占用的空间相对较少;缺点:频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk-r命令来改善性能

压缩表:因为每个记录是被单独压缩的,所以只有非常小的访问开支

(2)InnoDB存储引擎*

该存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。
InnoDB存储引擎的特点:支持自动增长列,支持外键约束

(3):MEMORY存储引擎

Memory存储引擎使用存在于内存中的内容来创建表。每个memory表只实际对应一个磁盘文件,格式是.frm。memory类型的表访问非常的快,因为它的数据是放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失掉。
MEMORY存储引擎的表可以选择使用BTREE索引或者HASH索引,两种不同类型的索引有其不同的使用范围

Hash索引优点:

Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。
Hash索引缺点: 那么不精确查找呢,也很明显,因为hash算法是基于等值计算的,所以对于“like”等范围查找hash索引无效,不支持;

Memory类型的存储引擎主要用于哪些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地对中间结果进行分析并得到最终的统计结果,。对存储引擎为memory的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中,所以一定要对下次重新启动服务后如何获得这些修改后的数据有所考虑。

(4)MERGE存储引擎

Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的。

总结

以上所述是小编给大家介绍的Python操作MySQL数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python测试人员需要掌握的知识
Feb 08 Python
python3连接MySQL数据库实例详解
May 24 Python
Django 内置权限扩展案例详解
Mar 04 Python
如何使用Python自动控制windows桌面
Jul 11 Python
python函数的万能参数传参详解
Jul 26 Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
kafka-python 获取topic lag值方式
Dec 23 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
python 解决微分方程的操作(数值解法)
May 26 Python
python实现抖音视频批量下载
Jun 20 #Python
Python 类的特殊成员解析
Jun 20 #Python
python实现音乐下载的统计
Jun 20 #Python
django2用iframe标签完成网页内嵌播放b站视频功能
Jun 20 #Python
python基于http下载视频或音频
Jun 20 #Python
python实现下载pop3邮件保存到本地
Jun 19 #Python
python+POP3实现批量下载邮件附件
Jun 19 #Python
You might like
PHP静态新闻列表自动生成代码
2007/06/14 PHP
PHP中删除变量时unset()和null的区别分析
2011/01/27 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
php常用正则函数实例小结
2016/12/29 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
很好用的js日历算法详细代码
2013/03/07 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
2017/07/11 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Pycharm安装python库的方法
2020/11/24 Python
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
关键字final的用法
2013/10/02 面试题
企业治理工作自我评价
2013/09/26 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
应届毕业生自荐书
2014/06/18 职场文书
班级出游活动计划书
2014/08/15 职场文书
免职证明样本
2014/10/23 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
施工安全员岗位职责
2015/04/11 职场文书
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript