使用python将Excel数据插入数据库:
在刚开始使用时,遇到过好多坑,先详细写一下:
①在操作excel时,需要导入xlrd(pip install xlrd)
②在操作数据库时,需要导入pymysql.cursor (pip install pymysql)
下边是相关代码:
① 操作Excel:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import xlrd
def read_excel(cursor,file_name):
TABLE_NAME='';
FIELDS='';
VALUES='';
#open file
workbook=xlrd.open_workbook(file_name)
#get all sheet
sheet_list=workbook.sheet_names()
for sheet in sheet_list:
TABLE_NAME=sheet
#如果TABLE_NAME 不存在,则需要创建表
#GOTO
sheet2 = workbook.sheet_by_name(sheet)
fields=sheet2.row_values(0)
FIELDS = ','.join(fields)
rows=sheet2.nrows;
for row in range(rows-1):
value=sheet2.row_values(row+1)
VALUES = ','.join("\""+str(v)+"\"" for v in value)
insert_sql='insert into '+ TABLE_NAME+ '(' + FIELDS + ')'+'VALUES ('+VALUES+')';
print (insert_sql)
cursor.execute(insert_sql)
②链接DB
#!/usr/bin/python3
# -*- coding: utf8 -*-
import pymysql.cursors
from ReadExcel import read_excel
# 连接数据库
db = pymysql.Connect(
host='ip',
port=3306,
user='username',
passwd='PASSWORD%',
db='DB_NAME',
charset='utf8'
)
def operation_data():
cursor=db.cursor()
read_excel(cursor,'data.xlsx')
# 关闭数据库连接
db.commit();
db.close()
operation_data()
其实本身难度不大,就是当时遇到的坑,在mac docs窗口查询导入的数据竟然出来是乱码,但是在sqlyog等工具里边显示正常。