Я хочу загрузить файл xlsx в свою базу данных. Я попытался загрузить файл, используя пакет Openpyxl и параметр bulk_create в django, как указано ниже, model.py,
class cardata(models.Model):
Name= models.CharField(max_length = 60, db_column = 'Name')
Model_Type= models.CharField(max_length = 60, db_column = 'Model_Type')
......
objects = models.Manager()
pdobjects = DataFrameManager()
def __str__(self):
field_values = []
for field in self._meta.get_fields():
field_values.append(str(getattr(self, field.name, '')))
return ' '.join(field_values)
views.py,
def upload(request):
if request.method == "POST":
excel_file = request.FILES["excel_file"]
wb = openpyxl.load_workbook(excel_file, data_only=True)
worksheet = wb.worksheets[0]
excel_data = list()
for row in worksheet.iter_rows():
row_data = list()
for cell in row:
if cell.value=='':
cell.value='None'
row_data.append(str(cell.value).strip())
excel_data.append(row_data)
df = pd.DataFrame(columns=excel_data[0], data=excel_data[1:])
df_records = df.to_dict('records')
model_instances = [cardata(
Name =record['Name'],
Model_type =record['Model_type'],
Year =record['Year'],
Make =record['Make'],
.......
) for record in df_records]
cardata.objects.bulk_create(model_instances)
return render('success.html')
else:
return render('upload_form.html')
Приведенный выше код отлично работает для загружаемого файла с меньшим объемом данных. Когда я пытаюсь загрузить файл, содержащий более 5 строк, мне выдается
MemoryError at /upload/
У меня естьиметь дело с большими наборами данных. Предложите мне более простой и быстрый способ загрузки данных в модель базы данных или некоторые коды.
Заранее спасибо.