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

确保安装 xlrd

在这里插入图片描述
利用python将excel导入SQL Server数据库_第1张图片

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

利用python将excel导入SQL Server数据库_第2张图片
SC表格内容如图所示
利用python将excel导入SQL Server数据库_第3张图片

在SQL Server中创建表,表名submit

利用python将excel导入SQL Server数据库_第4张图片
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) 

举个栗子,连续运行两次程序,第一次带有上面两行。第二次不带,最后一次运行程序的执行结果分别如下:
利用python将excel导入SQL Server数据库_第5张图片
利用python将excel导入SQL Server数据库_第6张图片
可以发现,加上以下两行代码

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

在submit表中,程序第二次执行结束后的结果就不会“堆积
当然,如果只导入一次,Delete就没有任何意义了,可加可不加。
④有的时候excel表格的第一行是表头不是数据,但不希望把表头内容当作数据导入到数据库中,比如:
利用python将excel导入SQL Server数据库_第7张图片
解决的办法是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)

运行结果

利用python将excel导入SQL Server数据库_第8张图片

你可能感兴趣的:(Python学习)