Почему я получаю эту ошибку, когда пытаюсь импортировать файл 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()

The returned error

Вернуться на верх