一、简介:

  MySQL为关系型数据库,其他关系型数据库包括Oracle、DB2、Sql Server等等。Python操作MySQL需要使用到pymsyql模块,pip安装即可。

二、操作MySQL步骤

  1、连上数据库(IP、端口号、用户名、密码、数据库名)

  2、建立游标

  3、执行sql

  4、获取结果

  5、关闭游标

  6、关闭连接

 import pymysql
conn = pymysql.connect(
host='192.168.1.112',
user='test',
passwd='',
port=3306, # port必须是int类型
db='test',
charset='utf8' # charset必须写utf8,不能写utf-8
)
sqla = 'select * from stu limit 10;'
sqlb = 'insert into stu (id,name,sex) VALUE (10000,"张流量","女");'
cur = conn.cursor() # 建立游标,不指定cursor类型返回的是二维元组
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) # 建立游标,指定cursor类型返回的是字典
cur.execute(sqla) # 执行sqla
cur.execute(sqlb) # 执行sqlb
conn.commit() # 执行insert、delete、update语句必须commit
res = cur.fetchall() # 执行所有返回的结果,fetchall返回的是一个二维数组
res = cur.fetchone() # 执行所有返回的结果,fetchone返回的是第一行
res = cur.fetchmany(2) # 执行所有返回的结果,fetchmany传入一个数返回多少条数据
res = cur.description # 返回表中每个字段的信息,description返回的也是一个二维数组
print(res)
cur.close() # 关闭游标
conn.close() # 关闭连接

Cursor类型:

  不指定cursor类型,即:cur = conn.cursor(),则返回的结果是:((5, 'Ben', 男'), (6, 'Lily', 女')),是一个二维的元组

  指定curson类型,即:cur = conn.cursor(cursor=pymysql.cursors.DictCursor),则返回的结果是:

  [{'id': 5, 'name': 'Ben', 'sex': '男'}, {'id': 6, 'name': 'Lily', 'sex': '女'}]

fetchall()和fetchone()的区别:

  fetchall():获取到这个sql执行的全部结果,它把数据库表中的每一行数据放到一个元组或字典里面

  fetchone():获取到这个sql执行的一条结果,它返回的只是一条数据

  如果sql语句执行的结果是多条数据的时候,那就用 fetchall(),如果能确定sql执行的结果只有一条,那就用fetchone()

三、封装操作MySQL数据库的函数

 def my_db(sql,port=3306,charset='utf8'):
import pymysql
host,user,passwd,db = '192.168.1.112','test','','test' # 定义变量
conn = pymysql.connect(host=host,
user=user,
passwd=passwd,
port=port,
db=db,
charset=charset)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) # 建立游标,指定cursor类型返回的是字典
cur.execute(sql) # 执行语句
if sql.strip().split()[0].upper() == 'SELECT': # 判断sql语句是否以select开头
res = cur.fetchall()
else:
conn.commit()
res = 'OK'
cur.close() # 关闭游标
conn.close() # 关闭连接
return res

四、练习

  传入一个表名,把所有数据导出,写入excel文件

 def export_excel(table_name):
import pymysql,xlwt
conn = pymysql.connect(
host='118.24.3.40',
user='jxz',
passwd='',
port=3306,
db='jxz',
charset='utf8')
sql = 'select * from %s;'%table_name
cur = conn.cursor() # 建立游标,不指定cursor类型返回的是二维元组
cur.execute(sql) # 执行sql
all_data = cur.fetchall() # 获取表中所有数据
fileds = [filed[0] for filed in cur.description] # 获取表的所有字段存入一个list里面
book = xlwt.Workbook() # 新建一个excel
sheet = book.add_sheet('sheet1') # 增加sheet页
for col,filed in enumerate(fileds):
sheet.write(0,col,filed) # 将表头写入excel文件中的第一行
row = 1 # 定义行数
for data in all_data: # 控制行
for col,filed in enumerate(data):#控制列
sheet.write(row,col,filed)
row = row + 1 # 每次写完一行,行加1
book.save('%s.xls'%table_name)

Python学习之==>操作MySQL的更多相关文章

  1. python学习之操作mysql

    欢迎点击个人博客 http://www.iwangzheng.com/ 刚开始学python,所以很多代码都需要在ipython里尝试一下.今天记录的是最基本的操作mysql数据库. 写数据库连接操作 ...

  2. [Python] 学习笔记之MySQL数据库操作

    1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...

  3. 【Python】python读取文件操作mysql

    尾大不掉,前阵子做检索测试时,总是因为需要业务端操作db和一些其他服务,这就使得检索测试对环境和数据依赖性特别高,极大提高了测试成本. Mock服务和mysql可以很好的解决这个问题,所以那阵子做了两 ...

  4. python大法好——操作mysql

    python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库 ...

  5. python开发_python操作mysql数据库

    如果你还没有准备好开发环境,你不妨花上一小点时间去看看:python开发_mysqldb安装 本篇blog是有关python操作mysql数据的相关内容. 我做了一个demo: 先看运行效果: mys ...

  6. 10 python学习笔记-操作数据库(十)

    在功能.接口测试中,常常需要通过数据库的操作,来准备数据.检测环境及核对功能.接口的数据库操作是否正确. 在自动化测试中,就需要我们用代码连接数据库自动完成数据准备. 环境检查及数据库断言的功能.数据 ...

  7. Python使用DB-API操作MySQL数据库

    Python提供了一个标准数据库API,称为DB-API,用于处理基于SQL的数据库.与任何底层数据库的交互都可以使用DB-API,因为DB-API在代码与驱动程序之间提供了一个抽象层,可以根据需要替 ...

  8. Python学习-list操作

    Python列表(list)操作: 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置 ...

  9. python学习道路(day12note)(mysql操作,python链接mysql,redis)

    1,针对mysql操作 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 设置密码 update user set password ...

随机推荐

  1. MySQL的简单条件判断语句

    在MySQL中条件判断语句常用于数据转换,基于现有数据创建新的数据列,使用场景还是比较多. 基础样式: CASE WHEN`条件`THEN`结果` ELSE`默认结果` END 在同一条判断语句中可以 ...

  2. framebuffer测试程序

    /* framebuffer简单测试程序 网上转载 很多次 的程序 :-) */ #include <stdio.h> #include <stdlib.h> #include ...

  3. python cv2的视频检测:睁眼闭眼

    如题,想实现一个简单的根据摄像头的某一帧检测睁眼闭眼的功能. 初步的想法是: 1. cv2调用计算机摄像头,读取某一帧的画面. 2. 将该画面作为 哈尔-人脸分类器的输入接口,根据分类器结果返回分类的 ...

  4. zabbix利用percona-toolkit工具监控Mysql主从同步状态

    一.下载percona-toolkit工具包 percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等. [root ...

  5. Spring Framework Part3 IoC and Dynamic Proxy

    spring serious of blog edit by 马士兵教育 Maven方式创建Spring工程 工程创建 1.新建项目 选择Maven Project 2.勾选 Create a sim ...

  6. Oracle数据库的下载安装和配置

    前言·为了学习ORDBMS,下载一个Oracle数据库用来练习. 下载 我个人学习使用就没必要企业版 注册并登录Oracle官网 https://www.oracle.com 找到产品下载: 数据库: ...

  7. windows窗口启动redis

    必须先得配置好环境变量,才能在窗口开启 启动服务端:redis-server 启动客户端:redis-cli

  8. 【leetcode】1230.Toss Strange Coins

    题目如下: You have some coins.  The i-th coin has a probability prob[i] of facing heads when tossed. Ret ...

  9. A1006

    输入n行员工id以及到达和离开的时间,输出最早到达的员工的id和最晚离开的员工的id 注:字符串赋值函数strcpy(目标字符串,原字符串)字符串之间的赋值使用该函数,需要#include<st ...

  10. The Preliminary Contest for ICPC Asia Shanghai 2019 J. Stone game

    题目:https://nanti.jisuanke.com/t/41420 思路:当a(a∈S′)为最小值 如果Sum(S′)−a≤Sum(S−S′)成立 那么(∀t∈S′,Sum(S′)−t≤Sum ...