Python SQL Server使用PyODBC对列名进行编码

Python SQL Server使用PyODBC对列名进行编码,python,sql-server,python-2.7,odbc,pypyodbc,Python,Sql Server,Python 2.7,Odbc,Pypyodbc,我正在尝试使用pyodbc将Python与SQL Server数据库连接起来。当我获取用于获取表的列名的游标.description时,我得到以下信息: u'\u6573\u7373\u6f69\u496ed' but I have this string in SQL Server: sessionId u'\u6163\u6c6ce\u496ed' but I have this string in SQL Server: calle u'\u6974\u656d\u7473\u6d61p'

我正在尝试使用pyodbc将Python与SQL Server数据库连接起来。当我获取用于获取表的列名的
游标.description
时,我得到以下信息:

u'\u6573\u7373\u6f69\u496ed' but I have this string in SQL Server: sessionId
u'\u6163\u6c6ce\u496ed' but I have this string in SQL Server: calle
u'\u6974\u656d\u7473\u6d61p' but I have this string in SQL Server: timestamp
u'\u6576\u7372\u6f69np' but I have this string in SQL Server: version
sessionId、calle、timestamp和version是SQL Server表的列名

我从cursor.description获得的字符串是左字符串

我想转换字符串 u'\u6573\u7373\u6f69\u496ed'插入字符串sessionId中,与其他列相同

我怎么做

提前谢谢

我使用以下代码获得这些结果:

cursor = conexion_sql.conn.cursor()
cursor.execute('select top 5 * from DWH.COB.table')
然后我得到了描述:

cursor.description
我得到这个:

[(u'\u6573\u7373\u6f69\u496ed', unicode, 37, 37L, 37L, 0, True),
 (u'\u6163\u6c6ce\u496ed', unicode, 4000, 4000L, 4000L, 0, True),
 (u'\u6974\u656d\u7473\u6d61p', datetime.datetime, 23, 23L, 23L, 3, False),
 (u'\u6576\u7372\u6f69np', unicode, 10, 10L, 10L, 0, True),
 (u'\u6546\u6863\u4361\u7261\u6167\u445f\u4857',
  datetime.datetime,
  23,
  23L,
  23L,
  3,
  False),
 (u'\u6946\u6863\u7265\u436f\u7261\u6167\u445f\u4857',
  unicode,
  100,
  100L,
  100L,
  0,
  False)]
详情:

Python version: 2.7.13
pypyodbc version: 1.3.4
ODBC Driver: ODBC Driver 17 for SQL Server


conn_string = '''
        DRIVER={4};
        SERVER={0};
        DATABASE={1};
        UID={2};
        PWD={3};
        TrustServerCertificate=yes;
        Connection Timeout=15
        '''.format(server, database, uid, pwd, driver)
        self.conn = pypyodbc.connect(conn_string)

我能够复制您的问题:

#-*-编码:utf-8-*-
导入系统
导入PyODBC
打印(系统版本替换('\n','')
#2.7.15+(默认,2019年10月7日,17:39:04)[GCC 7.4.0]
打印(pyodbc.version)
# 1.3.5
连接字符串=(
'DRIVER=SQL Server的ODBC驱动程序17;'
'服务器=192.168.0.17949242;'
'DATABASE=myDb;'
'UID=sa;PWD=uu;'
)
cnxn=pyodbc.connect(连接字符串)
crsr=cnxn.cursor()
crsr.execute(“选择1作为foo”)
desc=crsr.description
col_name=desc[0][0]
打印(颜色名称)#潦o
打印(repr(col_name))#u'\u6f66o'

不再维护pyodbc。改用。

我可以复制您的问题:

#-*-编码:utf-8-*-
导入系统
导入PyODBC
打印(系统版本替换('\n','')
#2.7.15+(默认,2019年10月7日,17:39:04)[GCC 7.4.0]
打印(pyodbc.version)
# 1.3.5
连接字符串=(
'DRIVER=SQL Server的ODBC驱动程序17;'
'服务器=192.168.0.17949242;'
'DATABASE=myDb;'
'UID=sa;PWD=uu;'
)
cnxn=pyodbc.connect(连接字符串)
crsr=cnxn.cursor()
crsr.execute(“选择1作为foo”)
desc=crsr.description
col_name=desc[0][0]
打印(颜色名称)#潦o
打印(repr(col_name))#u'\u6f66o'

不再维护pyodbc。改用。

如何获取这些列名(显示代码)?SQL Server对所有
系统名
使用UTF16字符串编码,但这些看起来像是填充到int16s中的ASCII字符对。@AlwaysLearning我已将代码放在帖子中。当做您通常会使用
columns=[column[0]获取游标的列名,用于cursor.description]
,请参阅,但是您的cursor.description转储看起来很混乱。请将您的问题包括:Python版本、pyodbc版本、ODBC驱动程序、连接字符串。啊,所以您使用的是pyodbc,而不是pyodbc。您能否尝试使用pyodbc,看看效果是否更好?如何获得这些列名(显示代码)?SQL Server对所有
系统名
使用UTF16字符串编码,但这些看起来像是填充到int16s中的ASCII字符对。@AlwaysLearning我已将代码放在帖子中。当做您通常会使用
columns=[column[0]获取游标的列名,用于cursor.description]
,请参阅,但是您的cursor.description转储看起来很混乱。请将您的问题包括:Python版本、pyodbc版本、ODBC驱动程序、连接字符串。啊,所以您使用的是pyodbc,而不是pyodbc。您能否尝试使用pyodbc,看看效果是否更好?