Я пытаюсь вставить данные из файла JSON в базу данных Postgres, но я получаю эту ошибку "индекс кортежа таблицы вне диапазона".
Я был на этом в течение дня, и я могу найти свою ошибку. Я был бы очень признателен за вашу помощь. Вот мой код Я использую executemany и вставляю 2 строки в базу данных
def bulkInsert(records, db_name, db_user, db_pass, db_endpoint):
try:
connection = connect(db_name, db_user, db_pass, db_endpoint)
cursor = connection.cursor()
sql_insert_query = """ INSERT INTO raw.IncidentesViales (latitud, folio,
geopoint, hora_creacion,
delegacion_inicio, dia_semana,
fecha_creacion, ano,
tipo_entrada, codigo_cierre,
hora_cierre, incidente_c4,
mes, delegacion_cierre,
fecha_cierre, mesdecierre,
longitud, clas_con_f_alarma)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """
# executemany() to insert multiple rows rows
result = cursor.executemany(sql_insert_query, records)
connection.commit()
print(cursor.rowcount, "***** Record inserted successfully into table *****")
except (Exception, psycopg2.Error) as error:
print("***** Failed inserting record into table {} *****".format(error))
finally:
# closing database connection.
if (connection):
cursor.close()
connection.close()
print("***** PostgreSQL connection is closed *****")
Я использую промежуточную функцию, чтобы получить нужные мне поля из файла JSON и преобразовать их в список :
def records_rows(record):
l = [json.dumps(record['fields'][campo]) for campo in record['fields'].keys()]
return l
Я получаю записи , которые я хочу вставить, они выглядят так (2 записи):
[['19.31469', '"C4 / 131231/03346 "," [19.31469, -99.07113] ',' "22:44:53", "" IZTAPALAPA "," Martes "," 31.12.2013 "," " 2014 "','" LLAMADA DEL 066 "','" (I) Сообщение о происшествии в полном объеме, а также информирование о событиях ",," "02:11:35", "" accidente- choque sin lesionados "','" 1 "','" IZTAPALAPA "," "01/01/2014", "Enero", "-99.07113", "EMERGENCIA" '], ['19 .36336' , '"C4 / 140101/04189", "[19.36336, -99.19104]", "21:45:43", "ALVARO OBREGON", "Mi \ u00e9rcoles", "" 01/01 / 2014 "','" 2014 "','" LLAMADA DEL 066 "','" (A) La unidad de atenci \ u00f3n a Emergencias fue despachada, lleg \ u00f3 al lugar de los hechos y подтверждает \ u00f3 la Emergencia reportada «», '"23:55:59"', '"accidente-choque con lesionados"', '"1"', '"ALVARO OBREGON" "," "01.01.2014"', "" Enero "',' -99.19104 ',' "URGENCIAS MEDICAS" ']]
И я вызываю функцию так:
bulkInsert([records_rows(record) for record in records], db_name, db_user_name, db_user_password, db_host)
НО я продолжаю получать ОШИБКА: индекс списка из диапазон
Это потому, что я использую список вместо кортежа?