回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试将Excel中的查询读入Python列表,这是我能够实现的。
下一步,我要在Teradata中执行列表中的所有查询(可以是任何数据库)
我得到一个错误,下面是示例代码。感谢您的帮助。你知道吗</p>
<p>#工作代码:#<br/>
导入teradata
导入xlrd
udaExec=teradata.UdaExec文件(appName=“Hello World”,ersion=“1.0”,logConsole=False)</p>
<pre><code> session = udaExec.connect(method="odbc", system="tddev",
username="abc", password="abc!1",authentication="LDAP",driver="Teradata");
loc = ("C:\\Users\\abc\\Desktop\\Queries.xlsx")
wb = xlrd.open_workbook(loc)
wbsheet=wb.sheet_by_name("Queries")
total_rows=wbsheet.nrows
query_list=[]
for row1 in range(1,total_rows):
exceldata = wbsheet.row(row1)
query_list.append(exceldata)
# getting an error after adding session execute code to above code #
for row2 in query_list:
session.execute(row2)
Error:
Traceback (most recent call last):
File "C:/Users/prasnaya/Desktop/Terada_worksheet.py", line 31, in <module>
session.execute(row2)
File "C:\Users\prasnaya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\teradata\udaexec.py", line 675, in execute
self.internalCursor.execute(query, params, **kwargs)
File "C:\Users\prasnaya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\teradata\udaexec.py", line 748, in execute
self._execute(self.cursor.execute, q, params, **kwargs)
File "C:\Users\prasnaya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\teradata\udaexec.py", line 790, in _execute
func(query, params, **kwargs)
File "C:\Users\prasnaya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\teradata\tdodbc.py", line 613, in execute
self.hStmt, _inputStr(_convertLineFeeds(query)), SQL_NTS)
File "C:\Users\prasnaya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\teradata\tdodbc.py", line 881, in _convertLineFeeds
return "\r".join(util.linesplit(query))
File "C:\Users\prasnaya\AppData\Local\Programs\Python\Python37-32\lib\site-packages\teradata\util.py", line 357, in linesplit
sql if isString(sql) else newline.join(sql))
TypeError: can only join an iterable
Final Working Code :
import Teradata
import xlrd
udaExec = teradata.UdaExec (appName="HelloWorld", version="1.0",
logConsole=False)
session = udaExec.connect(method="odbc", system="tdprod",
username="xyz", password="abc!1",authentication="LDAP",
driver="Teradata");
loc = ("C:\\Users\\prasnaya\\Desktop\\Queries.xlsx")
wb = xlrd.open_workbook(loc)
wbsheet=wb.sheet_by_name("Queries")
total_rows=wbsheet.nrows
print(total_rows)
query_list=[]
for row1 in range(0,total_rows):
exceldata = wbsheet.cell_value(row1,0)
query_list.append(exceldata)
print(len(query_list))
for row2 in query_list:
print(row2)
for row in session.execute(row2):
print(row)
session.close()
</code></pre>