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。
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。