我正在使用数据库,当我想执行一个从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.
[...]