溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何實現操控mysql批量插入數據

發布時間:2020-10-28 15:36:03 來源:億速云 閱讀:563 作者:Leah 欄目:開發技術

這篇文章運用簡單易懂的例子給大家介紹Python如何實現操控mysql批量插入數據,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

一、連接數據庫

        使用的函數:pymysql.connect

        語法:db=pymysql.connect(host='localhost',user='root',port=3306,password='Your password',db='database_name')

Python如何實現操控mysql批量插入數據

        參數說明: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查看表的情況如下:

Python如何實現操控mysql批量插入數據

        學生成績表創建成功!

三、批量插入數據

        創建完表后,接下來就是插入數據…而插入數據又可以分為兩種方式:按行插入和一次性,我們將依次介紹。

按行插入

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內容如下:

Python如何實現操控mysql批量插入數據

四、更多

        根據以上步驟,我們可知只要在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)

Python如何實現操控mysql批量插入數據

從輸出結果可知,元素是以tuple的方式進行儲存的。我們可以轉為更多規范的格式查看:

import pandas as pd
	df=pd.DataFrame(list(rst),columns=['班級','平均分'])
	df

Python如何實現操控mysql批量插入數據

完成各項操作后,不要忘記斷開與數據庫的連接:

db.close()

以上就是本次分享的全部內容~

附錄:python MySQL 批量插入

在現實生活中,經常會使用到Python 將信息清洗完后插入數據庫,但一條條插入勢必速度效率跟不上,此時將需要使用批量插入的思維。

# coding:utf-8
import pymysql
 
# 打開數據庫連接
db = pymysql.connect(host='localhost', port=3306,
           user='username', passwd='password', db='database_name', charset='utf8')
 
# 使用cursor()方法獲取操作游標
cursor = db.cursor()
 
# SQL 插入語句
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, AGE, SEX) VALUES (%s,%s,%s)"
# 一個tuple或者list
T = (('xiaoming', 31, 'boy'), ('hong', 22, 'girl'), ('wang', 90, 'man'))
 
try:
  # 執行sql語句
  cursor.executemany(sql, T)
  # 提交到數據庫執行
  db.commit()
except :
  # 如果發生錯誤則回滾
  db.rollback()
# 關閉游標
cursor.close()
# 關閉數據庫連接
db.close()

關于Python如何實現操控mysql批量插入數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女