在Python中,通過pymysql模塊,編寫簡短的腳本,即方便快捷地控制MySQL數據庫
一、連接數據庫
使用的函數:pymysql.connect
語法:db=pymysql.connect(host='localhost',user='root',port=3306,password='Your password',db='database_name')
參數說明:host:MySQL服務器地址
user:用戶名
password:MySQL登錄密碼
port:MySQL服務器端口號
db:需要連接的數據庫名
通常服務器地址、用戶名、端口號都是上述的默認值
二、創建表
連接完數據庫後,我們需要使用db.cursor()獲取數據庫的操作遊標
cur=db.cursor()
接着使用execute()語句即可執行SQL語句.我們以創建學生成績表來進行演示:
import pymysql
db=pymysql.connect(host='localhost',user='root',password='123456',port=3 306,db='work1')
cur=db.cursor() ##獲取遊標
sql='create table grade(id varchar(10),name varchar(10),age int,score int,class varchar(10))'
cur.execute(sql)
打開Navicat查看錶的情況如下:
學生成績表創建成功!
三、批量插入數據
創建完表後,接下來就是插入數據…而插入數據又可以分爲兩種方式:按行插入和一次性,我們將依次介紹。
- 按行插入
id=['101','102','103','104','105','106','107','108','109','110']
name=['諸葛亮','劉備','周瑜','張飛','關羽','呂布','貂蟬','黃忠','馬超','典韋']
age=[28,30,27,26,28,28,24,26,23,18]
score=[89,56,78,60,40,33,90,95,86,82]
class_=['一班','一班','一班','二班','二班','二班','三班','三班','三班','三班']
sql='insert into grade values(%s,%s,%s,%s,%s)'
for i in range(0,len(id)):
cur.execute(sql,(id[i],name[i],age[i],score[i],class_[i]))
db.commit() #一定要提交數據!!不然在數據庫中是沒有數據顯示的
- 一次性插入
data=((id[i],name[i],age[i],score[i],class_[i]) for i in range(0,len(id)))
sql='insert into grade values(%s,%s,%s,%s,%s)'
cur.executemany(sql,data)
db.commit()
插入數據後,表grade內容如下:
四、更多
根據以上步驟,我們可知只要在execute語句中放入相應的SQL語句,即可實現對數據庫的各種操作。而在pymysql中實現查詢數據操作後,還需通過對遊標對象使用.fetchall()方法來返回查詢結果。
查詢目標:篩選出各班的平均分並以降序進行排列
sql='select class,avg(score) from grade group by class order by avg(score) desc'
cur.execute(sql)
rst=cur.fetchall()
print(rst)
從輸出結果可知,元素是以tuple的方式進行儲存的。我們可以轉爲更多規範的格式查看:
import pandas as pd
df=pd.DataFrame(list(rst),columns=['班級','平均分'])
df
完成各項操作後,不要忘記斷開與數據庫的連接:
db.close()
以上就是本次分享的全部內容~