python讀取excel並匯入mysql

2021-09-26 06:16:34 字數 3237 閱讀 6383

如果excel檔案內的資料是這樣的:

idname

agebirthday

1kate

112008-2-2

2mike

221997-4-4

3tom

331986-5-5

首先,匯入python包xlrd,以及它的乙個方法 xldate_as_tuple。

import xlrd

from xlrd import xldate_as_tuple # 用於轉換時間格式

from datetime import date,datetime # 也是用於標準化時間

book = xlrd.open_workbook("pxbdata.xlsx") # 開啟excel檔案

sheet = book.sheets()[0] # 獲取檔案中的第乙個表

std = #定義乙個空列表,準備存放後面將要讀到的資料

for i in range(1,sheet.nrows): # 一行一行遍歷資料,sheet.nrows為excel中資料的總行數

# 因為資料被讀取後,資料的格式會發生變化,所以下面要先把資料的格式轉換一下。

temp = sheet.row_values(i) # 獲取到第i行資料

temp[0]=int(temp[0]) # 把這一行的第1個資料轉換為整型,因為讀取之後已經變成了浮點型

temp[2]=int(temp[2]) # 把這一行的第3個資料轉換為整形,理由一樣

# 下面這行比較複雜了。temp[3]在原表裡是時間,讀入之後變成乙個浮點數。

# 那麼先用xldate_as_tuple()的方法,把temp[3]轉換成乙個時間元組,

# 在取這個元組的前3個數字,用date()方法變成時間,

# 再把這個時間通過.strftime(),轉換成標準格式,最後得到的時間格式是str

temp[3]=date(*xldate_as_tuple(temp[3],book.datemode)[:3]).strftime('%y-%m-%d')

std

最後得到的std的結果是:

[(1, 『kate』, 11, 『2008-02-02』),

(2, 『mike』, 22, 『1997-04-04』),

(3, 『tom』, 33, 『1986-05-05』)]

create  database test816; # 建立資料庫

use test816; #使用資料庫

#建立資料表

create table students(

-> id int not null auto_increment,

-> name varchar(100) not null,

-> age int not null,

-> birthday date,

-> primary key(id)

-> );

安裝pymysql包

ubuntu中,用命令:pip3 install pymysql

匯入包

import pymysql
建立連線:

conn = pymysql.connect(host = 'localhost', user = 'root', passwd = '2', db = 'test816', charset = 'utf8')
建立游標,給資料庫傳送sql語句指令:

cur = conn.cursor()
準備好資料:

std = [(1, 'kate', 11, '2008-02-02'),

(2, 'mike', 22, '1997-04-04'),

(3, 'tom', 33, '1986-05-05')]

編寫sql指令:

sql = 'insert into students values(%s, %s, %s, %s);'
傳入資料:

cur.executemany(sql, std) # 執行多行插入
最後提交並關閉游標和連線:

上圖測試的時候用了別的資料。

import xlrd

from xlrd import xldate_as_tuple

from datetime import date,datetime

def read_excel(file_path):

'''讀取excel,返回資料列表'''

book = xlrd.open_workbook(file_path)

sheet = book.sheets()[0]

std =

for i in range(1,sheet.nrows):

temp = sheet.row_values(i)

temp[0]=int(temp[0])

temp[2]=int(temp[2])

temp[3]=date(*xldate_as_tuple(temp[3],book.datemode)[:3]).strftime('%y-%m-%d')

return std

import pymysql

def insert_data(std):

'''資料匯入mysql'''

conn = pymysql.connect(host = 'localhost', user = 'root', passwd = '2', db = 'test816', charset = 'utf8')

cur = conn.cursor()

sql = 'insert into students values(%s, %s, %s, %s);'

cur.executemany(sql, std) # 執行多行插入

conn.commit()

cur.close()

conn.close()

Python讀取Excel表並分析

最近閒來無事,就學習了一下python資料分析,剛好學院發了一張學生的基本情況表,沒事做就分析了一下。廢話不多說,就開始寫 首先讀取excel,犯了不少錯,因為這個表有乙個表頭,所以在讀取的時候去除掉表頭。df pd.read excel 計算機學生表.xlsx header 1 這個時候才正式讀取...

python 讀取excel內容並輸出

讀取excel內容並用print輸出。import pandas as pd df pd.read excel 測試.xlsx 這個會直接預設讀取到這個excel的第乙個表單 data df.head 預設讀取前5行的資料 print 獲取到所有的值 n format data 格式化輸出 方法二 ...

Python 讀取Excel資料並分組統計

匯入這個神奇的包 import pandas as pd 參考這個文件 io 是檔案 sheet name 選擇excel 的sheet usecols 選擇當前sheet 的前幾列 names 給每列定義乙個名字 df1 pd.read excel io e haha 測試資料.xlsx shee...