错误:“ NoneType”对象不可下标

时间:2019-05-02 09:48:16

标签: python sqlite csv

我正在使用数据库,当我想执行一个从csv插入所有值的函数时,会收到此消息。这里的代码:

我写了一些印刷品以查看错误所在,但是我没有解决错误...

*这是我正在调用的函数:

def procesarTipoObjeto(conn,valor):
    '''
    Método que comprueba si está insertado el valor en la tabla TIPO_OBJETO y si no, lo inserta.
    '''
    #Establecemos una conexión con un cursor:
    #conn = conectar(base_datos)
    cursor = conn.cursor()
    #Comprobamos si ya está insertado
    consulta = "SELECT cod_objeto FROM TIPO_OBJETO WHERE descripcion = '" + valor + "'"
    cursor.execute(consulta)
    registro = cursor.fetchone()
    #Y si no lo insertamos
    if registro != None:
        return registro[0]
    else:
        consulta = "INSERT INTO TIPO_OBJETO VALUES (?)"
        cursor.execute(consulta,(valor,))
        return cursor.lastrowid

*这是我要运行的功能:

def procesarCSV(borrar):
    '''
    Función para leer el fichero CSV externo, procesarlo línea a línea e insertar su información en una base datos.
    '''
    '''
    Mapa del fichero CSV:
    Campo 0: Código de tipo de objeto: entero: NOT NULL
    '''
    #Si se abre en modo borrar, antes se vacían las tablas:
    if (borrar):
        vaciarTablas()

    #Obtenemos una conexión a base de datos para utilizar durante todo el procesamiento:
    conn = conectar(base_datos)
    print(conn)

    #Abrimos el fichero para la lectura:
    with open(datos, 'r+', newline='', encoding='iso-8859-15') as csv_file:
        reader = csv.reader(csv_file,delimiter=';')

        #Inicializamos un contador a 0:
        contador = 0
        for row in reader:
            contador+=1
            if (contador>1):
                try:
                    #print(str(row))
                    clave_incidencia = int(row[0])
                    #print(clave_incidencia)
                    #Buscamos si ese registro está en la tabla:
                    if buscarRegistro(conn,'INCIDENCIA','num_incidencia',clave_incidencia):
                        pass
                    else:
                        cod_objeto = procesarTipoObjeto(conn,row[2])
                        cod_origen = procesarTipoOrigen(conn,row[1])
                        fecha1 = row[3]
                        fecha2 = row[4]
                        insertarIncidencia(conn,clave_incidencia,cod_objeto,cod_origen,fecha1,fecha2)

                except Exception as err:
                    #Si se produce cualquier error, mostramos el resultadd
                    print("Se produjo el siguiente error al procesar el registro ", contador," :", err)


#Fin de la función de procesamiento.

*我为每个功能获得的提示:

conn = conectar(base_datos)
procesarTipoObjeto(conn,'gafas')

Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
procesarTipoObjeto(conn,'gafas')
File "C:\Users\Adrián González\Desktop\GESTICODI\2º (Segundo curso)\Segundo cuatrimestre\Técnicas de programación\Trabajo Final\Tratamiento_datos.py", line 74, in procesarTipoObjeto
cursor.execute(consulta,(valor,))
sqlite3.OperationalError: table TIPO_OBJETO has 2 columns but 1 values were supplied

______________________

procesarCSV(False)

<sqlite3.Connection object at 0x000002CB15D22C70>

Se produjo el siguiente error al procesar el registro  2  : 'NoneType' object is not subscriptable.

Se produjo el siguiente error al procesar el registro  3  : 'NoneType' object is not subscriptable.

Se produjo el siguiente error al procesar el registro  4  : 'NoneType' object is not subscriptable.

[...]

0 个答案:

没有答案
相关问题