- 本博客是《MySQL进阶》系列博客的第一部分,主要介绍如何利用pymysql库通过python语言对mysql进行交互操作
- 本博客既为方便自己查看复习而作,亦为你而作,望能有所裨益
文章目录
- 简介
- 安装
- 使用
- 游标
- 数据库
- 增
- 删
- 改
- 查
简介
顾名思义,pymysql库是一个利用python语言对mysql数据库进行交互式操作对的第三方库。
安装
pip install pymysql #pip安装
conda install pymysql #conda安装
使用
下面我们通过一个简短的例子大致了解下其操作原理,然后再予以详细介绍。
import pymysql
db = pymysql.connect(host='<主机名>',user='<用户名>',
password='<密码>',port='<端口号>,db='<数据库名>',charset='<字符集>')
# 其中部分参数为可选参数
cursor = db.cursor()
sql = '<sql语句>'
cursor.execute(sql)
data = cursor.fetchone()
print(data)
db.close()
以上语句我们就不添加注释了,大家可以尝试着换成自己的数据库相关信息,看看返回的是什么结果吧
游标
在这里你可以将游标理解为一个指针,是一个存储了数据库查询结果的数据集,因此,我们可以通过对游标进行操作进而对数据库进行相关操作。
下面我们列出游标常用的一些操作:
-
execute(query,args)
:执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 -
executemany(query,args)
:执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数 -
fetchone()
:返回一条结果行 -
fetchmany(size)
:返回size条结果行 -
fetchall()
:返回全部结果行
数据库
增
- 我们先在数据库里创建一个新表
import pymysql
db = pymysql.connect(<参数>)
cursor = db.cursor()
sql = 'create table person(id int auto_increment primary key not null,name varchar(14) not null)'
cursor.execute(sql)
db.close()
- 接下来我们在创建的表里插入一条记录
import pymysql
db = pymysql.connect(<参数>)
cursor = db.cursor()
sql = 'insert into person(name) values("xy"),("April")'
try:
cursor.execute(sql)
db.commit()
print('插入成功')
except:
print('插入失败')
db.rollback()
db.close()
删
import pymysql
db = pymysql.connect(<参数>)
cursor = db.cursor()
sql = 'delete from person where id=2'
try:
cursor.execute(sql)
db.commit()
print("删除成功")
except:
print("删除失败")
db.rollback()
db.close()
改
import pymysql
db = mysql.connect(<参数>)
cursor = db.cursor()
sql = 'update person set name="xy" where id=3'
try:
cursor.execute(sql)
db.commit()
print("修改成功")
except:
print("修改失败")
db.rollback()
db.close()
我们也可以使用通配符来进行修改
import pymysql
db = pymysql.connect(<参数>)
cursor = db.cursor()
sql = 'update person set name=%s where id=%s'
try:
cursor.execute(sql,["Obito",5])
db.commit()
print("修改成功")
except:
print("修改失败")
db.rollback()
db.close()
查
- 查询MySQL数据库下的所有数据库名
# 查看所有数据库
import pymysql
db = pymysql.connect(<参数>)
cur = db.cursor()
sql = 'show databases'
cur.execute(sql)
print(cur.fetchall())
- 查询某个表的记录
import pymysql
db = pymysql.connect(<参数>)
cursor = db.cursor()
sql = 'select * from person'
try:
cursor.execute(sql)
print(cursor.fetchall()) #每条记录对应一个元组
except:
print("查询失败")
db.close()
- 和python数据分析常用库pandas结合使用
# 使用pandas的read_sql方法,将提取到的数据直接转化成dataframe进行操作
import pymysql
import pandas as pd
db = pymysql.connect(<参数>)
df1 = pd.read_sql("select * from person",db)
display(df1)