首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pyodbc截断列名

pyodbc截断列名
EN

Stack Overflow用户
提问于 2018-08-15 05:04:50
回答 2查看 337关注 0票数 2

我正在使用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包。

当我运行以下命令时:

代码语言:javascript
复制
>>>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。你知道为什么它会缩短列名吗?

EN

回答 2

Stack Overflow用户

发布于 2021-10-21 13:40:06

有点晚了,但因为我在其他地方没有找到这个问题或答案……这似乎是一个编码问题。在我的例子中,我可以通过在运行查询之前添加以下行来解决这个问题:

编码(pyodbc.SQL_WMETADATA,connection.setdecoding=‘utf-16LE’)

票数 1
EN

Stack Overflow用户

发布于 2019-11-13 12:06:15

很好奇你是否已经解决了这个问题。我曾经遇到过这个问题,并通过降级到pyodbc=3.0.7来解决它。然而,我不能再这样做了。似乎在Anaconda通道中找不到这个版本的Pyodbc。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51849745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档