一、Pymysql模块简介
Mysql数据库是数据挖掘任务的数据源之一,通过pymysql模块可以直接连接MySQL数据库,进行增删改查等操作。
Python连接MySQL的流程如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210518094750639.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxdzg0NDU5NzUzNg==,size_16,color_FFFFFF,t_70#pic_center)
1.1cursor(游标)的作用
为什么要建立一个cursor(游标)?
因为当python与数据库连接时并不是一次性读取了所有数据,而是根据SQL语言进行操作。cursor在这里相当于执行SQL查询的货车,在Mysql数据库和Python程序之间传递信息。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210518094831246.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xxdzg0NDU5NzUzNg==,size_16,color_FFFFFF,t_70#pic_center)
二、实际操作连接数据库
2.1 导入pymysql
import pandas as pd
import numpy as np
import pymysql
import time
2.2 连接Mysql数据库
db = pymysql.connect(host="localhost",
user="root",
password="********",
database="orderinfo",
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
2.2.1 pymysql.connect()参数说明
host(str): MySQL服务器地址,默认为本地主机(localhost)
port(int): MySQL服务器端口号,默认为当前用户
user(str): 用户名,没有默认值
password(str): 连接密码,没有默认值
db(str): 数据库名称
charset(str): 连接编码
cursorclass(str): cursor()使用的种类,默认值为MySQLdb.cursors.Cursor
2.2.2pymysql.connect()实例对象方法说明
db.close(): 可关闭数据库连接,并释放相关资源。
db.cursor([cursorClass]):返回一个指针对象,用于访问和操作数据库中的数据。
db.begin(): 用于开始一个事务,如果数据库的AUTOCOMMIT已经开启就关闭它,直到事务调用commit()和rollback()结束。
db.commit(): 表示事务提交
db.rollback():表示事务回退
2.3 创建游标
cursor = db.cursor()
2.3.1 db.cursor()指针对象游标的方法
cursor()的类型,括号在中不填默认为元组,还有DictCursor: 字典类型,SSCursor: 无缓冲元组类型,SSDictCursor: 无缓冲字典类型
无缓冲游标类型,适用于数据量很大,一次性返回太慢,或者服务端带宽较小;创建连接时,通过cursorclass 参数指定类型。
cursor.close(): 方法,关闭指针并释放相关资源。
cursor.execute(query[,parameters]):执行数据库查询。
cursor.fetchall(): 方法,可取出指针结果集中的所有行,返回的结果集一个元组(tuples)。
cursor.fetchmany([size=cursor.arraysize]):方法,从查询结果集中取出多行,我们可利用可选的参数指定取出的行数。
cursor.fetchone(): 方法,从查询结果集中返回下一行。
cursor.arraysize: 属性,指定由cursor.fetchmany()方法返回行的数目,影响fetchall()的性能,默认值为1。
cursor.rowcount: 属性,指出上次查询或更新所发生行数。-1表示还没开始查询或没有查询到数据。
2.4 连接的最简全部环节
import pymysql
db = pymysql.connect(host="localhost",
user="root",
password="*********",
database="orderinfo",
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
cursor = db.cursor()
sql = "select * from ad limit 5000"
cursor.execute(sql)
result = cursor.fetchall()
finalresult = list(result)
cursor.close()
db