- 本博客是《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)