光标描述不显示列名

问题描述

我有一个web2py API应用程序,最近从python 2.7.x升级到了python 3.6.3。 API函数查询Microsoft sql数据库

当我使用选项'as_dict = True'执行sql语句时,游标对象使用其description属性从db表中获取列名以进行一些检查,但是由于某些原因,从数据库已“损坏”。

例如:

数据库表:

webDataTbl:
_key      |      _value

WEB_NAME        NAME
WEB_VER         '1.2.3'

SP:

SELECT * FROM  webDataTbl WHERE _key LIKE 'WEB_%'

web2py中的函数

sql_cmd = ("EXEC getWebData")
result = db.executesql(sql_cmd,as_dict=True)
return {"result": result}

executesql方法执行以下代码(当as_dict = True时):

columns = adapter.cursor.description
fields = colnames or [f[0] for f in columns]
if len(fields) != len(set(fields))
    raise RuntimeError

source code所述,cursor.description返回一个7项元组的列表,当第一个字段是列名(或别名)时,从数据库返回的每一列一个元组。 但是,当我打印元组时,我得到了:

[(b'c',<class 'str'>,64,False),(b'c',256,True)]

我认为问题可能出在数据库编码或其他方面,但是它并没有帮助更改sql连接中的编码。 我没有更改代码数据库数据,SP等中的任何内容。我唯一要做的就是升级版本。 请注意,获取的数据可以。当我不使用'as_dict'选项并且光标不使用description属性时,一切正常。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)