pyodbc在连接数据库时交替抛出异常

2024-06-28 20:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试过使用pyodbc作为Vertica和Teradata数据库的登录驱动程序来创建一个跨db验证脚本。如果我对一个数据库登录(即Vertica或Teradata)运行查询,则一切正常。当我同时在Vertica和Teradata中运行脚本时,问题就开始了。驱动程序每隔一次抛出以下错误。在

(<class 'pyodbc.Error'>, Error('HY000', 'The driver did not supply an error!'), <traceback object at 0x10c18f4d0>)

下面是vertica的连接字符串:

^{pr2}$

下面是Teradata的连接字符串:

def create_connection_redwood():
    conn = pyodbc.connect("DRIVER=Teradata;DBCNAME=mydatabase;UID=username;PWD=passphrase;QUIETMODE=YES", autocommit=True,unicode_results=True)
    return conn

我使用如下连接,从源和目标两个文件读取查询。在

def dqm_newark() :
    conn_nwk = create_connection_nwk()
    dataframes_newark = []
    tgtfile = open('tgtqueries.sql', 'rU').read()
    querylist = tgtfile.split(';')
    querylist.pop()
    for query in querylist :
        dataframes_newark.append(pd.read_sql(query, conn_nwk))
    close_connection(conn_nwk)
    return dataframes_newark,querylist


def dqm_redwood() :
    conn_rw = create_connection_redwood()
    dataframes_redwood = []
    srcfile = open('srcqueries.sql', 'rU').read()
    querylist = srcfile.split(';')
    querylist.pop()
    for query in querylist :
        dataframes_redwood.append(pd.read_sql(query, conn_rw))
    close_connection(conn_rw)
    return dataframes_redwood,querylist

我使用pandas dataframe匹配结果集:

assert_frame_equal(src_dataframes[i], tgt_dataframes[i],check_names=False)

回溯如下:

Traceback (most recent call last): File "DQM.py", line 158, in <module> compare_data() File "DQM.py", line 94, in compare_data 
src_dataframes,querylist_redwood = dqm_redwood() File "DQM.py", line 31, in 
dqm_redwood conn_rw = create_connection_redwood() File "DQM.py", line 125, in 
create_connection_redwood conn = pyodbc.connect("DRIVER=Teradata;DBCNAME=databasename;UID=username;PWD=passwrod;Q‌​UIETMODE=YES", autocommit=True,unicode_results=True) 
Error: ('HY000', 'The driver did not supply an error!')

我不知道是什么引起了这个问题。我有没有遗漏什么?在


Tags: intruereadsqlcreateconnectionconndataframes