EXECL 导入数据库
这是测试脚本:
可以先读取表格的内容,再通过下面的方式进行迭代
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得到图片
'''
#--------------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>