EXECL 导入数据库
这是测试脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 可以先读取表格的内容,再通过下面的方式进行迭代 from monitor.models import * import xlrd data = xlrd.open_workbook( '/home/mypj/ip.xls' ) table = data.sheet_by_name( 'MPLS' ) table = data.sheet_by_name( 'DIA' ) t = table.row_values #通过列表推导式批量将数据放到一个List中 iplist = [Ipinfo_model( order_id = t(i)[ 0 ], ipaddr = t(i)[ 1 ], mask = t(i)[ 2 ], customer = t(i)[ 3 ], addr = t(i)[ 4 ], line_no = t(i)[ 5 ], PE = t(i)[ 6 ], PE_port = t(i)[ 7 ], SW = t(i)[ 8 ], SW_port = t(i)[ 9 ], BW = t(i)[ 10 ], AS_no = t(i)[ 11 ], Vender = t(i)[ 13 ], baoxiu = t(i)[ 14 ] ) for i in range ( 1 ,table.nrows)] #再通过.bulk_create一次写入数据库 Ipinfo_model.objects.bulk_create(iplist) |
#此脚本可直接EXCEL的数据导入到Django的数据库中,并进行读取
'''
FILES
一个类字典对象,包含所有上传的文件。 FILES 的键来自 <input type="file" name="" /> 中的 name 。 FILES 的值是一个标准的Python字典, 包含以下三个键:
filename :字符串,表示上传文件的文件名。
content-type :上传文件的内容类型。
content :上传文件的原始内容。
注意 FILES 只在请求的方法是 POST ,并且提交的 <form> 包含 enctype="multipart/form-data" 时 才包含数据。否则, FILES 只是一个空的类字典对象。
判断file提交的内容是否为空的方法是:if 'file' in request.FILES:
FileField 有一个必须的参数:upload_to一个本地的文件系统路径,被附加到你的 MEDIA_ROOT 设置后面,
在settings文件中你需要定义 MEDIA_ROOT ,它就是你要保存上传文件的目录的全路径
保存到数据库中的只有文件(相对于 MEDIA_ROOT )的路径
模版中用.url得到图片
'''
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #--------------views config ----------------------------------- from monitor.models import * import xlrd #文件导入时要用到Request.FILES类 def upload(request): print request.FILES if request.FILES: ExcelUpload = request.FILES[ 'ExcelUpload' ] print ExcelUpload name = str (ExcelUpload) #print 'name1:'name1 #name=str(time.strftime('%Y%m%d%H%M%S'))+'xls' print os.path with open (os.path.join(name), 'wb+' ) as destination: for chunk in ExcelUpload.chunks(): destination.write(chunk) into_sql(request,name) return HttpResponse( 'its ok' ) def into_sql(request,name): data = xlrd.open_workbook(name) table = data.sheet_by_name( 'sheet1' ) t = table.row_values iplist = [Ipinfo_model( order_id = t(i)[ 0 ], ipaddr = t(i)[ 1 ], mask = t(i)[ 2 ], customer = t(i)[ 3 ], addr = t(i)[ 4 ], line_no = t(i)[ 5 ], PE = t(i)[ 6 ], PE_port = t(i)[ 7 ], SW = t(i)[ 8 ], SW_port = t(i)[ 9 ], BW = t(i)[ 10 ], AS_no = t(i)[ 11 ], Vender = t(i)[ 13 ], baoxiu = t(i)[ 14 ] ) for i in range ( 1 ,table.nrows)] Ipinfo_model.objects.bulk_create(iplist) #--------------模板配置----------------------------------- < / form> <! - - 这里的Form是用于数据导入 - - > <! - - 注意 FILES 只在请求的方法是 POST ,并且提交的 <form> 包含 enctype = "multipart/form-data" 时 才包含数据。否则, FILES 只是一个空的类字典对象。 - - > <form action = "/upload/" enctype = "multipart/form-data" method = "post" > { % csrf_token % } < input type = "file" style = "height:20px;width:211px;" name = "ExcelUpload" > < input type = 'submit' value = '导入' > < / form> |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步