Uploading .csv to Teradata via Python with error: Operations cannot be performed on a closed cursor

Uploading .csv to Teradata via Python with error: Operations cannot be performed on a closed cursor

Python 这里是新手。我正在尝试通过 Python 将 .csv 数据上传到 Teradata table。这是我的代码:

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: Operations cannot be performed on a closed cursor。

这里是回溯:

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.

感谢您提供的所有帮助。

当然,我一发帖就想通了。我只是在 udaExec.connect 参数中添加了 cursor=open。