Питон новичок здесь. Я пытаюсь загрузить данные .csv в таблицу Teradata через Python. Вот мой код:

import pandas as pd
import teradata as td

### Import AAL file ###
path = ******
folder = *****
file = ******
link = path + folder + file
mydata = pd.read_csv(link)
all_columns = list(mydata)
mydata[all_columns] = mydata[all_columns].astype(str)

mydata.columns = mydata.columns.str.replace(' ', '_')
mydata.rename(columns = {'Day':'mDay'}, inplace = True)
mydata.rename(columns = {'Unnamed:_19':'Schedule_Name'}, inplace = True)

### Connect to Sandbox ###
udaExec = td.UdaExec(appName="****", version="16.10", logConsole=False)
session = udaExec.connect(method="odbc", system="****", mechanism="TD2",
                          username="****", password="****")

with session as connect:
    data = [tuple(x) for x in mydata.to_records(index=False)]
    connect.executemany("INSERT INTO DB.table "
                        "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", data, batch=True)

У меня хорошее соединение с базой данных, но когда я загружаю данные, я получаю следующую ошибку: InterfaceError: Невозможно выполнить операции с закрытым курсором.

вот обратная связь:

Traceback (most recent call last):

  File "<ipython-input-200-ebe52fc3a3d3>", line 4, in <module>
    "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", data, batch=True)

  File "C:\Users\***\AppData\Local\Continuum\anaconda3\lib\site-packages\teradata\udaexec.py", line 679, in executemany
    self.internalCursor.executemany(query, params, **kwargs)

  File "C:\Users\***\AppData\Local\Continuum\anaconda3\lib\site-packages\teradata\udaexec.py", line 754, in executemany
    self._execute(self.cursor.executemany, query, params, **kwargs)

  File "C:\Users\***\AppData\Local\Continuum\anaconda3\lib\site-packages\teradata\udaexec.py", line 790, in _execute
    func(query, params, **kwargs)

  File "C:\Users\***\AppData\Local\Continuum\anaconda3\lib\site-packages\teradata\tdodbc.py", line 619, in executemany
    self._checkClosed()

  File "C:\Users\***\AppData\Local\Continuum\anaconda3\lib\site-packages\teradata\tdodbc.py", line 876, in _checkClosed
    "Operations cannot be performed on a "

InterfaceError: Operations cannot be performed on a closed cursor.

Спасибо за любую помощь.

0
Michael Byars 20 Дек 2019 в 19:15

1 ответ

конечно, я понял это сразу после публикации. Я просто добавил курсор = open в параметрах udaExec.connect.

0
Michael Byars 20 Дек 2019 в 16:38