#python #python-3.x #pandas #pyodbc
#python #python-3.x #pandas #pyodbc
Вопрос:
Я пытаюсь вставить записи в таблицу Netezza, прочитав файл CSV в фрейм данных pandas, но продолжаю получать ошибку ключа.
KeyError: ('columnname', 'totalCount', 'distinctValuesCount')
Я что-то здесь упускаю…
Env Stack
python 3.7.0 DB: Netezza Подключение: Windows ODBC
Я использую этот код:
/* ----------------------------------------------------------------------- */
tmp_df2 :
|colSeq|batch_id|job_id|file_table_name|columnname|totalCount|distinctValuesCount|maxOccuranceValue|maxOccuranceValueCount|first|last|mean|std|min|25%|50%|75%|max
0|NULL|NULL|NULL|CDR_JOIN_WITH_PROMPT|CALL_ID|4699016.0|139919.0|3768023237|394.0|||||||||
1|NULL|NULL|NULL|CDR_JOIN_WITH_PROMPT|START_TIME|4699016.0|60906.0|2019-04-03 09:08:56|512.0|2019-04-02 23:48:28|2019-04-03 23:54:04|||||||
2|NULL|NULL|NULL|CDR_JOIN_WITH_PROMPT|END_TIME|4699016.0|60728.0|2019-04-03 11:56:31|540.0|2019-04-02 23:54:51|2019-04-03 23:54:36|||||||
3|NULL|NULL|NULL|CDR_JOIN_WITH_PROMPT|ANI|4699016.0|66695.0|0000000000 |80798.0|||||||||
4|NULL|NULL|NULL|CDR_JOIN_WITH_PROMPT|EXIT_TYPE|4699016.0|3.0|networkxfer |2430564.0|||||||||
ABC_conn = pyodbc.connect('DRIVER={NetezzaSQL};SERVER=10.10.100.22;PORT=5480;DATABASE=ABC;UID=user;PWD=password;DSN=ODBC_1;Trusted_Connection=yes')
for index,row in tmp_df2.iterrows():
cur = ABC_conn.cursor()
cur.executemany("insert into ETL_DQ_INSTANCE(COLUMNNAME,TOTALCOUNT,DISTINCTVALUESCOUNT) values (?, ?, ?)",row["columnname","totalCount","distinctValuesCount"])
ABC_conn.commit()
cur.close()
ABC_conn.close()
/* ----------------------------------------------------------------------- */
Ответ №1:
Похоже, вы пытаетесь извлечь определенные столбцы из pandas Series
, выполнив
row["columnname","totalCount","distinctValuesCount"]
но это не сработает. Вместо этого вам нужно использовать что-то вроде
(row["columnname"], row["totalCount"], row["distinctValuesCount"])
которая вернет кортеж, содержащий указанные значения.
Комментарии:
1. да, теперь появилась ошибка. Я исправил ее, и она работает нормально, да, теперь появилась ошибка. Я исправил ее, и она работает нормально