我一直在使用Python的Teradasaql库来查询Teradata,刚刚开始使用以前有效的代码来获取DLL初始化错误
这就是准确的错误:
OSError: [WinError 1114] A dynamic link library (DLL) initialization routine failed
当我调用teradasql.connect()时,它抛出。以下是完整的堆栈跟踪:
File "test.py", line 23, in <module>
password = db_password
File "C:\Program Files (x86)\Python\Python37\lib\site-packages\teradatasql\__init__.py", line 101, in __init__
goside = ctypes.cdll.LoadLibrary(sLibPathName)
File "C:\Program Files (x86)\Python\Python37\lib\ctypes\__init__.py", line 434, in LoadLibrary
return self._dlltype(name)
File "C:\Program Files (x86)\Python\Python37\lib\ctypes\__init__.py", line 356, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 1114] A dynamic link library (DLL) initialization routine failed
我已经尝试手动加载TeradaSQL的init文件正在查看的dll,使用
import ctypes
goside = ctypes.cdll.LoadLibrary(r'C:\Program Files (x86)\Python\Python37\Lib\site-packages\teradatasql\teradatasql.dll')
虽然ctypes.cdll.LoadLibrary()
适用于我机器上的其他.dll文件,但它会抛出相同的错误
已尝试重新安装TeradaSQL并恢复到以前的版本。两者都没有帮助
奇怪的是,这种联系有时确实有效。上面生成堆栈跟踪的代码在.ipynb文件而不是.py文件中时工作。但我在.ipynb文件中得到了相同的错误,代码略有不同。 这是我的密码:
import pandas as pd
import teradatasql
from getpass import getpass
db_password = getpass('Teradata password: ')
with teradatasql.connect(
host = xxxx,
user = xxxx,
password = db_password
) as connect:
query = '''
…
'''
results = pd.read_sql(query, connect)
如何处理此dll问题并使连接再次可靠地工作
目前没有回答
相关问题 更多 >
编程相关推荐