Python操控mysql批量插入數(shù)據(jù)的實(shí)現(xiàn)方法
在Python中,通過pymysql模塊,編寫簡短的腳本,即方便快捷地控制MySQL數(shù)據(jù)庫
一、連接數(shù)據(jù)庫
使用的函數(shù):pymysql.connect
語法:db=pymysql.connect(host='localhost',user='root',port=3306,password='Your password',db='database_name')
參數(shù)說明:host:MySQL服務(wù)器地址
user:用戶名
password:MySQL登錄密碼
port:MySQL服務(wù)器端口號(hào)
db:需要連接的數(shù)據(jù)庫名
通常服務(wù)器地址、用戶名、端口號(hào)都是上述的默認(rèn)值
二、創(chuàng)建表
連接完數(shù)據(jù)庫后,我們需要使用db.cursor()獲取數(shù)據(jù)庫的操作游標(biāo)
cur=db.cursor()
接著使用execute()語句即可執(zhí)行SQL語句.我們以創(chuàng)建學(xué)生成績表來進(jìn)行演示:
import pymysql db=pymysql.connect(host='localhost',user='root',password='123456',port=3 306,db='work1') cur=db.cursor() ##獲取游標(biāo) sql='create table grade(id varchar(10),name varchar(10),age int,score int,class varchar(10))' cur.execute(sql)
打開Navicat查看表的情況如下:
學(xué)生成績表創(chuàng)建成功!
三、批量插入數(shù)據(jù)
創(chuàng)建完表后,接下來就是插入數(shù)據(jù)…而插入數(shù)據(jù)又可以分為兩種方式:按行插入和一次性,我們將依次介紹。
按行插入
id=['101','102','103','104','105','106','107','108','109','110'] name=['諸葛亮','劉備','周瑜','張飛','關(guān)羽','呂布','貂蟬','黃忠','馬超','典韋'] 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() #一定要提交數(shù)據(jù)!!不然在數(shù)據(jù)庫中是沒有數(shù)據(jù)顯示的
一次性插入
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()
插入數(shù)據(jù)后,表grade內(nèi)容如下:
四、更多
根據(jù)以上步驟,我們可知只要在execute語句中放入相應(yīng)的SQL語句,即可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的各種操作。而在pymysql中實(shí)現(xiàn)查詢數(shù)據(jù)操作后,還需通過對(duì)游標(biāo)對(duì)象使用.fetchall()方法來返回查詢結(jié)果。
查詢目標(biāo):篩選出各班的平均分并以降序進(jìn)行排列
sql='select class,avg(score) from grade group by class order by avg(score) desc' cur.execute(sql) rst=cur.fetchall() print(rst)
從輸出結(jié)果可知,元素是以tuple的方式進(jìn)行儲(chǔ)存的。我們可以轉(zhuǎn)為更多規(guī)范的格式查看:
import pandas as pd df=pd.DataFrame(list(rst),columns=['班級(jí)','平均分']) df
完成各項(xiàng)操作后,不要忘記斷開與數(shù)據(jù)庫的連接:
db.close()
以上就是本次分享的全部內(nèi)容~
附錄:python MySQL 批量插入
在現(xiàn)實(shí)生活中,經(jīng)常會(huì)使用到Python 將信息清洗完后插入數(shù)據(jù)庫,但一條條插入勢必速度效率跟不上,此時(shí)將需要使用批量插入的思維。
# coding:utf-8 import pymysql # 打開數(shù)據(jù)庫連接 db = pymysql.connect(host='localhost', port=3306, user='username', passwd='password', db='database_name', charset='utf8') # 使用cursor()方法獲取操作游標(biāo) cursor = db.cursor() # SQL 插入語句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, AGE, SEX) VALUES (%s,%s,%s)" # 一個(gè)tuple或者list T = (('xiaoming', 31, 'boy'), ('hong', 22, 'girl'), ('wang', 90, 'man')) try: # 執(zhí)行sql語句 cursor.executemany(sql, T) # 提交到數(shù)據(jù)庫執(zhí)行 db.commit() except : # 如果發(fā)生錯(cuò)誤則回滾 db.rollback() # 關(guān)閉游標(biāo) cursor.close() # 關(guān)閉數(shù)據(jù)庫連接 db.close()
到此這篇關(guān)于Python操控mysql批量插入數(shù)據(jù)的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Python mysql批量插入數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Scrapy+Selenium自動(dòng)獲取cookie爬取網(wǎng)易云音樂個(gè)人喜愛歌單
這篇文章主要介紹了Scrapy+Selenium自動(dòng)獲取cookie爬取網(wǎng)易云音樂個(gè)人喜愛歌單,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02淺談Python對(duì)內(nèi)存的使用(深淺拷貝)
這篇文章主要介紹了淺談Python對(duì)內(nèi)存的使用(深淺拷貝),具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python爬蟲實(shí)例_利用百度地圖API批量獲取城市所有的POI點(diǎn)
下面小編就為大家分享一篇Python爬蟲實(shí)例_利用百度地圖API批量獲取城市所有的POI點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01Python 帶有參數(shù)的裝飾器實(shí)例代碼詳解
這篇文章主要介紹了Python 裝飾器,帶有參數(shù)的裝飾器實(shí)例代碼詳解,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建
這篇文章主要介紹了Window版下在Jupyter中編寫TensorFlow的環(huán)境搭建,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Python開發(fā)工具PyCharm的下載與安裝步驟圖文教程
這篇文章主要為大家介紹了Python開發(fā)工具PyCharm的下載與安裝步驟圖文教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07