django与mysql之文件操作
向数据库中写入文件
将本地相对路径img/img1.jpg的文件写入数据库
def insert(request):
strb = ''
strb = strb.encode()
with open("img/img1.jpg", "rb") as f:
# 循环读取一张图片,一次性读取1024个字节
while True:
a = f.read(1024)
strb += a
if a == b"":#读取到空时停止
break
fileTest = Filetest()
fileTest.file1 = strb
fileTest.save()
return HttpResponse('数据插入完毕')
从数据库查询取出文件并保存到本地
查询数据库并保存文件到app1/img/img1_copy.jpg
def find(request):
result = Asd.objects.filter(id=1)#查询id为1的表项
#这里用了一个循环处理,但一般我们根据id查到的只有一项数据,所以用不用循环都一样
for i in result:
#把i.file1字节流写入新的文件f2
with open("app1/img/img1_copy.jpg", "wb") as f2:
f2.write(i.file)
return HttpResponse('数据下载完毕')
网络模型与数据库的上传与加载
上传model到数据库
将modelTrain方法返回得到的模型参数字典保存为.model文件
#model_dict就是之前的字典
model_dict = modelTrain(trainDataSet=train_dataset)
#字典保存为model文件,保存到'model/test.model'
torch.save(model_dict, 'model/test.model')
#读取文件字节流,存到变量strb里
strb = ''
strb = strb.encode()
with open('model/test.model', "rb") as f:
# 循环读取一张图片,一次性读取1024个字节
while True:
a = f.read(1024)
strb += a
if a == b"":
break
#上传更新到数据库
file = strb
k = Asd.objects.get(id=1)
k.file = file
k.save()
下载模型并加载到神经网络上
#从数据库查询id为1的项
result = Asd.objects.filter(id=1)
# 获取该项的file数据项(字节流),并写入model/don.model文件
for i in result:
with open('model/don.model', "wb") as f2:
f2.write(i.file)
#将刚刚下载的model文件加载到神经网络net上
net.load_state_dict(torch.load('model/don.model'))
对比之前用字典加载的方式
加载字典形式
#message.getData()是从聚合端返回的字典
net.load_state_dict(message.getData(), strict=True)
加载model文件形式
net.load_state_dict(torch.load('model/don.model'))