我们现有一个excel文件,并想将其导入数据库,主要分为两个步骤
1.读取excel文件(这里我路径写死)
首先需要引入pandas包
在路径字符串前面 + r 是为了屏蔽转义符导致出现问题(可以去掉 r 对比试试即可)
import pandas as pd
df = pd.DataFrame(pd.read_excel(r"D:\Code_Offline\pytest2\xls\test.xlsx"))
拿到df后我们就获取到了excel的整个表的数据
这时候我们一行一行的去遍历数据
这里为演示我们建立一个简单的具有四行四列的excel
首先先看一下df的长度
print("excel总列数为: ", len(df), "\n")
for i in range(len(df)):
print(i)
输出为
确认无误
2.创建与SqlServer的连接(其他数据库也一样,这里用SqlServer作为示范)
连接数据库的方法
def conn():
connect = pymssql.connect('.', 'sa', '123', 'DBCenter')
if connect:
print("连接成功")
return connect
3.接下来就通过读取的excel向数据库中插入
conn = conn()
for i in range(len(df)):
id = df["id"].values[i]
name = df["name"].values[i]
height = df["height"].values[i]
weight = df["weight"].values[i]
strsql = f"INSERT INTO testinfo SELECT {id},'{name}',{height},{weight}"
print(strsql)
cursor = conn.cursor()
cursor.execute(strsql) # 执行sql语句
conn.commit() # 提交
cursor.close()
执行成功,显示如下
数据库中已有结果,问题解决
4.通过表名导出csv或者其他格式excel文件
import xlwt
def export_excel(table_name):
# 连接数据库,查询数据
host, user, passwd, db = '127.0.0.1', 'root', '123', 'bms'
cur = conn.cursor()
sql = 'select * from %s' % table_name
cur.execute(sql) # 返回受影响的行数
fields = [field[0] for field in cur.description] # 获取所有字段名
all_data = cur.fetchall() # 所有数据
# 写入excel
book = xlwt.Workbook()
sheet = book.add_sheet('sheet1')
for col, field in enumerate(fields):
sheet.write(0, col, field)
row = 1
for data in all_data:
for col, field in enumerate(data):
sheet.write(row, col, field)
row += 1
book.save("%s.csv" % table_name)
export_excel("testinfo")
执行后
产生 .csv 文件
当然你想产生别的比如xls文件,修改
book.save("%s.csv" % table_name)
这里即可
希望可以解决你的问题