MySQL进阶(一):PyMySQL

  • 本博客是《MySQL进阶》系列博客的第一部分,主要介绍如何利用pymysql库通过python语言对mysql进行交互操作
  • 本博客既为方便自己查看复习而作,亦为你而作,望能有所裨益
  • 学习交流请联系 [email protected]

简介

顾名思义,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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章