Почему я получаю эту ошибку, когда пытаюсь импортировать файл mt csv в файл dbsqlite с помощью python manage.py?
У меня возникли проблемы с импортом файла csv в базу данных моего проекта django. Я работаю на windows prompt. Все шло отлично, пока я не попытался импортировать csv с помощью команды (python manage.py load_cursos). Я получаю следующую ошибку: UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x81 в позиции 958: символ сопоставлен с неопределенным
Может ли кто-нибудь помочь мне, пожалуйста?
вот мой models.py (он весь в charfield, потому что сначала я хочу научиться правильно импортировать, это тест)
from django.db import models
class Curso(models.Model):
idCurso = models.CharField(max_length=100, blank=True)
descricao = models.CharField(max_length=100, blank=True)
ordemRelatorio = models.CharField(max_length=100, blank=True)
tipoCurso = models.CharField(max_length=100, blank=True)
idTipoCurso = models.CharField(max_length=100, blank=True)
grupoFiltro = models.CharField(max_length=100, blank=True)
valorCurso = models.CharField(max_length=100, blank=True)
valorCursoUnidade = models.CharField(max_length=100, blank=True)
ordemAprendizado = models.CharField(max_length=100, blank=True)
qtdParcelas = models.CharField(max_length=100, blank=True)
nivelCertificado = models.CharField(max_length=100, blank=True)
reprovaPorNota = models.CharField(max_length=100, blank=True)
reprovaPorFalta = models.CharField(max_length=100, blank=True)
notaOral = models.CharField(max_length=100, blank=True)
notaEscrita = models.CharField(max_length=100, blank=True)
paginaMapa = models.CharField(max_length=100, blank=True)
idCondicaoPagamento = models.CharField(max_length=100, blank=True)
dataAlt = models.CharField(max_length=100, blank=True)
horaAlt = models.CharField(max_length=100, blank=True)
dataInc = models.CharField(max_length=100, blank=True)
horaInc = models.CharField(max_length=100, blank=True)
usuarioAlt = models.CharField(max_length=100, blank=True)
usuarioInc = models.CharField(max_length=100, blank=True)
cursoSemestral = models.CharField(max_length=100, blank=True)
contratoWebMostra = models.CharField(max_length=100, blank=True)
contratoWebNiveis = models.CharField(max_length=100, blank=True)
contratoWebDuracao = models.CharField(max_length=100, blank=True)
contratoWebOrdem = models.CharField(max_length=100, blank=True)
idRubrica = models.CharField(max_length=100, blank=True)
ativo = models.CharField(max_length=100, blank=True)
вот мой файл управления (load_cursos.py), расположенный в папкеappfolder/management/commands:
from csv import DictReader
from datetime import datetime
from django.core.management import BaseCommand
from cursos.models import Curso
from pytz import UTC
DATETIME_FORMAT = '%m/%d/%Y %H:%M'
ALREDY_LOADED_ERROR_MESSAGE = """
If you need to reload the course data from the CSV file,
first delete the db.sqlite3 file to destroy the database.
Then, run `python manage.py migrate` for a new empty
database with tables"""
class Command(BaseCommand):
# Show this when the user types help
help = "Loads data from ic_curso.csv into our Curso mode"
def handle(self, *args, **options):
if Curso.objects.exists():
print('Course data already loaded...exiting.')
print(ALREDY_LOADED_ERROR_MESSAGE)
return
print("Loading course data")
for row in DictReader(open('./ic_curso.csv')):
curso = Curso()
curso.idCurso = row['id_curso']
curso.descricao = row['descricao']
curso.ordemRelatorio = row['ORDEM_RELATORIO']
curso.tipoCurso = row['tipo_curso']
curso.idTipoCurso = row['id_tipo_curso']
curso.grupoFiltro = row['GrupoFiltro']
curso.valorCurso = row['valor_curso']
curso.valorCursoUnidade = row['valor_curso_unidade_02']
curso.ordemAprendizado = row['ordem_aprendizado']
curso.qtdParcelas = row['QtdeParcelas']
curso.nivelCertificado = row['NivelCertificado']
curso.reprovaPorNota = row['ReprovaPorNota']
curso.reprovaPorFalta = row['ReprovaPorFalta']
curso.notaOral = row['LancaNotaOral']
curso.notaEscrita = row['LancaNotaEscrita']
curso.paginaMapa = row['PaginaMapa']
curso.idCondicaoPagamento = row['id_condicao_pagamento']
curso.dataAlt = row['DataALT']
curso.horaAlt = row['HoraALT']
curso.dataInc = row['DataINC']
curso.horaInc = row['HoraINC']
curso.usuarioAlt = row['UsuarioALT']
curso.usuarioInc = row['UsuarioINC']
curso.cursoSemestral = row['CursoSemestral']
curso.contratoWebMostra = row['contrato_web_mostra']
curso.contratoWebNiveis = row['contrato_web_numero_niveis']
curso.contratoWebDuracao = row['contrato_web_duracao']
curso.contratoWebOrdem = row['contrato_web_ordem_lista']
curso.idRubrica = row['id_rubrica_folha']
curso.ativo = row['ativo']
curso.save()