利用python将excel导入SQL Server数据库

确保安装 xlrd

在这里插入图片描述
在这里插入图片描述

将excel表格文件放在.py文件相同的路径下

在这里插入图片描述
SC表格内容如图所示
在这里插入图片描述

在SQL Server中创建表,表名submit

在这里插入图片描述
S#,C#的数据类型都是nchar(10),Score数据类型为整型

程序代码

import xlrd
import pymssql

def output(array):
    for i in range(len(array)):
        for j in range(len(array[0])):
            print(array[i][j],end='')
            print('   ',end='')
        print(' ')
       
conn = pymssql.connect(server='DESKTOP-LYZ', user='sa', password='12345', database='test')
cursor = conn.cursor()
sqlNonQuery = "Delete from submit " 
cursor.execute(sqlNonQuery) 
chart = xlrd.open_workbook("SC.xlsx")  
sheet = chart.sheet_by_name("Sheet1")   
for i in range(1,sheet.nrows):
    l = sheet.row_values(i)
    Snum=l[0].rstrip()
    Cnum=l[1].rstrip()
    Score=l[2]
    sqlNonQuery="insert into submit values('%s','%s',%d)"%(Snum,Cnum,Score)  
    cursor.execute(sqlNonQuery)
conn.commit()
    
sqlQuery = "select * from submit" #查(查询语句Query),检验是否导入成功
cursor.execute(sqlQuery)
results = cursor.fetchall()
output(results)
conn.close()   

特别注意

①"SC.xlsx"为excel文件名,且要确保excel表格文件放在.py文件相同的路径下,否则会报错

chart = xlrd.open_workbook("SC.xlsx") 

②sheet为excel中的表名,一般默认为sheet1

sheet = chart.sheet_by_name("Sheet1") 

在这里插入图片描述
③这个将submit表删除的操作是保证每次导入excel表时,数据库中submit表的内容和每次导入的excel中的内容完全一致,而与之前submit表的内容无关

sqlNonQuery = "Delete from submit " 
cursor.execute(sqlNonQuery) 

举个栗子,连续运行两次程序,第一次带有上面两行。第二次不带,最后一次运行程序的执行结果分别如下:
在这里插入图片描述
在这里插入图片描述
可以发现,加上以下两行代码

sqlNonQuery = "Delete from submit " 
cursor.execute(sqlNonQuery) 

在submit表中,程序第二次执行结束后的结果就不会“堆积
当然,如果只导入一次,Delete就没有任何意义了,可加可不加。
④有的时候excel表格的第一行是表头不是数据,但不希望把表头内容当作数据导入到数据库中,比如:
在这里插入图片描述
解决的办法是for循环从1开始而不是从0开始:

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

如果excel的第一行就是数据也需要导入到数据库中,就让for循环从0开始即可

for i in range(sheet.nrows):
    l = sheet.row_values(i)

运行结果

在这里插入图片描述

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值