我正在使用python 3.6.2,pyodbc 4.0.23来访问Ubuntu 16.04上的Teradata 15.10.07.15。我安装的teradata驱动程序是Ubuntu16.20.00.36-1Ubuntu的amd64 SIMBA Teradata ODBC driver包。
当我运行以下命令时:
>>>pyodbc.pooling = False
>>>conn_str="autocommit=True;ANSI=True;PWD=xxx;UID=xxx;DATABASE=xxx;LOGINTIMEOUT=300;DBCNAME=xxx;DRIVER=Teradata;SERVER=x.x.x)"
>>>conn=pyodbc.connect(conn_str)
>>>conn.setdecoding(pyodbc.SQL_CHAR, encoding='latin')
>>>conn.setdecoding(pyodbc.SQL_WCHAR, encoding='latin')
>>>conn.setdecoding(pyodbc.SQL_WMETADATA, encoding='latin')
>>>conn.setencoding(encoding='latin')
>>>cur = conn.cursor()
>>>sql5 = """SELECT IP3_addr, cntry_name, city_name FROM tns_access_views.DW_TNS_IP_ADDR_GEO_LOC_LKP where cntry_name in (xxx) """
>>>ip = pandas.io.sql.read_sql(sql5,conn)
>>>ip.columns
Index(['IP3_', 'CNTRY', 'CITY_'], dtype='object')我在等待IP3_addr,cntry_name,city_name。你知道为什么它会缩短列名吗?
发布于 2021-10-21 13:40:06
有点晚了,但因为我在其他地方没有找到这个问题或答案……这似乎是一个编码问题。在我的例子中,我可以通过在运行查询之前添加以下行来解决这个问题:
编码(pyodbc.SQL_WMETADATA,connection.setdecoding=‘utf-16LE’)
发布于 2019-11-13 12:06:15
很好奇你是否已经解决了这个问题。我曾经遇到过这个问题,并通过降级到pyodbc=3.0.7来解决它。然而,我不能再这样做了。似乎在Anaconda通道中找不到这个版本的Pyodbc。
https://stackoverflow.com/questions/51849745
复制相似问题