从Excel中读取数据并批量写入MySQL数据库(基于pymysql)
一、Excel内容时这样的:
二、最初的代码是这样的:
# -*- coding:utf-8 -*-
import pymysql
from xlrd import open_workbook
class DB:
global host,username,password,port,database,config
host = "xx.xx.xx.xxx"
username = "root"
password = "xxxx"
port = 3306
database = "pythondb"
config = {
'host': str(host),
'user': username,
'passwd': password,
'port': int(port),
'db': database
}
def __init__(self):
self.db = None
self.cursor = None
def connectDB(self):
try:
self.db = pymysql.connect(**config)
self.cursor = self.db.cursor()
print "Connect DB successfully!"
except:
print "Connect DB failed!"
def executeSQL(self,sql):
self.connectDB()
self.cursor.execute(sql)
self.db.commit()
return self.cursor
def getAll(self,cursor):
value = cursor.fetchall()
return value
def getOne(self,cursor):
value = cursor.fetchone()
return value
def closeDB(self):
self.db.close()
print "Database closed!"
def get_xls(self,xls_name, sheet_name):
"""
get interface data from xls file
:return:
"""
cls = []
# open xls file
file = open_workbook(xls_name)
# get sheet by name
sheet = file.sheet_by_name(sheet_name)
# get one sheet's rows
nrows = sheet.nrows
for i in range(1,nrows):
cls.append(sheet.row_values(i))
return tuple(cls)
if __name__ == "__main__":
mysqlInfo = DB()
content = mysqlInfo.get_xls("DataSource.xls","Sheet1")
for i in range(0,len(content)):
id = content[i][0]
begin_date = str(content[i][1])
end_date = content[i][2]
in_num = content[i][3]
out_num = content[i][4]
all_num = content[i][5]
create_time = content[i][6]
use_time = content[i][7]
scope_date = content[i][8]
sql = "INSERT INTO `day`( ID, BEGIN_DATE, END_DATE, IN_NUM, OUT_NUM, ALL_NUM, CREATE_TIME, USE_TIME, SCOPE_DATE ) VALUES(%s,'%s','%s',%s,%s,%s,'%s',%s,%s)" %(id, begin_date, end_date, in_num, out_num, all_num, create_time, use_time, scope_date)
mysqlInfo.executeSQL(sql)
mysqlInfo.closeDB()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现