作者 | 黄伟呢

出品 | 数据分析与统计学之美

本文的重点,就是教会大家,如何用Python来操作MySQL数据库。

1. 通用步骤

其实,这里有一个通用步骤,都是写死了的,大家照做就行。

# 1. 导入相关库
import pymysql# 2. 链接MySQL服务器
db = pymysql.connect(host='localhost' , user='root' , password='******' , port=3306 ,db='spiders' , charset='utf8')# 3. 创建一个cursor游标对象
cursor = db.cursor()# 4. 在这一步写你的sql语句
sql = 'select version()'# 5. 执行sql语句
cursor.execute(sql)# 6. 断开连接
db.close()

可以看出,整个过程就是第四步那里不同。归根到底,其实就是写sql。

2. 需要特别说明的知识点

Ⅰ 各参数说明
db = pymysql.connect(host='localhost' , user='root' , password='******' , port=3306 ,db='spiders' , charset='utf8')

这一行代码很长,里面涉及到好几个参数,这里为大家一一介绍如下:

  • 参数 1 :mysql 服务器所在的主机 IP

  • 参数 2 :用户名;

  • 参数 3 :密码;

  • 参数 4 :连接的 mysql 主机的端口,默认是 3306;

  • 参数 5 :连接的数据库名;

  • 参数 6 :通信采用的编码方式,默认是'gb2312',要求与数据库创建时指定的编码一致,否则中文会乱码;

Ⅱ cursor游标对象

3. Python增删改查操作

① 创建一个数据表
import pymysqldb = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')cursor = db.cursor()# 检查表是否存在,如果存在删除
cursor.execute('drop table if exists students')# 创建表
sql = 'create table students(id int auto_increment primary key not null,name varchar(10) not null,age int not null)'cursor.execute(sql)db.close()

注:以后用代码创建表的机会并不多,表一般都是我们提前创建好的。

② 插入数据
import pymysqldb = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')cursor = db.cursor()# 插入数据
sql = 'insert into students(name,age) values(%s,%s)'
try:cursor.execute(sql,('孙悟空',100000))db.commit()
except:print("插入失败")db.rollback()db.close()

注 1:插入数据一定要用 try…except…语句,因为万一没插入成功,其余代码都无法执行。

注 2:import pymysql,此模块是默认开启mysql的事务功能的,因此,进行“增”、“删”、“改”的时候,一定要使用db.commit()提交事务,否则就看不见所插入的数据。

③ 更新数据
import pymysqldb = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')cursor = db.cursor()# 更新数据
sql = 'update students set age =%s where name=%s'
try:cursor.execute(sql,(30,"郭卫华"))db.commit()
except:print("插入失败")db.rollback()db.close()
③ 删除操作
import pymysqldb = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')cursor = db.cursor()# 删除数据
sql = 'delete from students where age=100000'
try:cursor.execute(sql)db.commit()
except:print("插入失败")db.rollback()db.close()
④ 查询操作
  • fetchone()功能:获取下一个查询结果集,结果集是一个对象。

  • fetchall()功能:接收全部返回的行。

import pymysqldb = pymysql.connect(host='192.168.3.47' , user='root',password='******' , port=3306 , db='spiders' , charset='utf8')cursor = db.cursor()# 查询数据
sql = 'select * from students where age>60'
try:cursor.execute(sql)reslist = cursor.fetchall()for row in reslist:print(“%d--%d” %(row[0],row[1],… row[n]))
except:print("插入失败")db.rollback()db.close()

4. 封装一个类

# 注:把下面类写在 studentsql 文件中
import pymysql
class StudentsSql():def __init__(self,host,user,port,dbname,charset):self.host = hostself.user = userself.port = portself.dbname = dbnameself.charset = charsetdef connet(sef):self.db = pymysql.connect(self.host, self.user, self.port,self.dbname, self.charset)def close(self):self.cursor.close()self.db.close()def get_one(self,sql):res = Nonetry:self.connect()self.cursor.execute(sql)res = self.cursor.fetchone()self.close()except:print(“查询失败”)return resdef get_all(self,sql):res = Nonetry:self.connect()self.cursor.execute(sql)res = self.cursor.fetchall()self.close()except:print(“查询失败”)return resdef inset(self,sql):return self.__edit(sql)def update(self,sql):return self.__edit(sql)def delete(self,sql):return self.__edit(sql)def __edit(self,sql):count = 0try:self.connect()count = self.cursor.execute(sql)self.db.commit()self.close()except:print(“事务提交失败”)self.db.rollback()return count

上述类封装成功,以后只需要调用即可。

from studentsql import StudentsSql
s = StudentsSql(“host='192.168.3.47' , user='root', password='******' , port=3306 , db='spiders' , charset='utf8'”)
res = s.get_all('select * from students where age>60')
for row in res:print(“%d--%d” %(row[0],row[1],… row[n]))

资讯

AI 考古比胡八一更高效

资讯

这个机器狗引起网友争议!

资讯

阿里发布云芯片倚天710

资讯

英特尔开源编程工具 ControFlag

分享

点收藏

点点赞

点在看

4000字,详解 Python 操作 MySQL 数据库!相关推荐

  1. python操作mysql数据库的常用方法使用详解

    python操作mysql数据库 1.环境准备: Linux 安装mysql: apt-get install mysql-server 安装python-mysql模块:apt-get instal ...

  2. python提取hbase数据_详解python操作hbase数据的方法介绍

    配置 thrift python使用的包 thrift 个人使用的python 编译器是pycharm community edition. 在工程中设置中,找到project interpreter ...

  3. Python操作mySql数据库封装类

    这是自己在做项目过程中,整理封装的操作mysql数据库封装类,自己可以修改下使用,节省大量时间. myGlobal.py # -*- coding: utf-8 -*-global globalLis ...

  4. python操作mysql数据库(增、删、改、查)_python对 MySQL 数据库进行增删改查的脚本...

    # -*- coding: utf-8 -*- import pymysql import xlrd # import codecs #连接数据库 conn = pymysql.connect(hos ...

  5. python 天气预报 mysql_python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库...

    前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 "test-mysql". Python 操作 ...

  6. python操作mysql中的表_带你了解什么是Python操作MySQL数据库

    写这篇文章主要是为了介绍Python操作MySQL数据库,并结合相应的实例带你更加深入了解.文中的代码实例很详细,对大家有一定的参考学习价值. 1.什么是pymysql? PyMySQL是在Pytho ...

  7. python操作mysql数据库练习

    python操作mysql数据库练习 本次练习是在windows下,mysql版本为5.7,python版本为2.7.5,集成环境为pycharm. 创建表时,enign在innodb下支持事务,其他 ...

  8. imooc的疯狂的蚂蚁的课程《Python操作MySQL数据库》 python3+pymysql模块来操作mysql数据库

    以下代码为imooc的疯狂的蚂蚁的课程<Python操作MySQL数据库>的python3版本的代码,使用的是pymysql模块来操作mysql数据库,代码与原课程有所改动,注意运行时需要 ...

  9. python操作mysql数据库用到的fetchone()函数和fetchall()函数

    在用python操作mysql数据库时,碰到了下面这两个函数,标记一下: fetchone() : 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None fetchall() : ...

最新文章

  1. Jupyter官方神器:可视化 Debug 工具!
  2. 如何把gcc编译工具使用到linux全局
  3. centos 7 安装wps
  4. 【AI白身境】深度学习必备图像基础
  5. UE4学习-虚幻4帮助手册、通过蓝图实现动画效果、添加时间轴、添加声音、C++和蓝图事件关联
  6. Google编程题:最小操作数
  7. redis学习-redis事务
  8. Linux system PXE网络环境
  9. 分布式协议与算法(一)Paxos 算法
  10. 计算机类耗品有哪些,办公用品和办公耗材清单有哪些?
  11. 如何系统学习Spring框架
  12. 两个同级路由如何相互访问
  13. Winform实现微信功能
  14. UE4 回合游戏项目 20- 添加人物被攻击的动画
  15. mysql主从配置duxi_手把手超详细Docker部署MongoDB集群
  16. N个人都不坐自己位置的情况有几种
  17. python图片数字识别_python 识别图片上的数字
  18. 面试这么久,终于收到offer了,月薪10k自研和13k外包该怎么选?
  19. C++ —— 自定义函数
  20. skylin TerraExplorer自定义飞行路线如何监听结束事件

热门文章

  1. 计算机系统的分类补充完整,数据库系统原(理B)13春A卷.doc
  2. java 多维数组转化为字符串
  3. Java多线程001——一图读懂线程与进程
  4. 7 种 Javascript 常用设计模式学习笔记
  5. 传统行业转型微服务的挖坑与填坑
  6. Openssl私建CA
  7. 快应用开发常见问题以及解决方案【持续更新】
  8. OSGI企业应用开发(二)Eclipse中搭建Felix运行环境
  9. HDU 4467 分块
  10. Python中的注释(转)