pyodbc:获取非ASCII列名

时间:2015-01-15 15:56:34

标签: python pyodbc

我有一个奇怪的问题。我必须与第三方数据库进行交互,并使用一些天才用于列名称Português,并使用特殊字符。

我使用pyodbc与数据库交互,通常在查询后我通过执行以下操作将每行作为字典获取:

columns = [desc[0] for desc in self._cursor.description]

for row in self._cursor:
    yield dict(itertools.izip(columns, row))

但是当我在这张精彩的桌子上查询时,我得到了一个如下字典:

{'Portugu\xeas': 'ola'}

如果我打印密钥,我会PortuguÛs。密钥本身是一个看起来像unicode文字(u'Portugu\xeas' == u'Português')的字符串,所以我在我的初始函数周围执行了这样做:

for row in self._cursor:
    yield {key.decode('unicode-escape'): value for key, value in itertools.izip(columns, row)}

在我目前的情况下,这似乎工作得很好......但说实话,我真的不知道自己在做什么,而且我害怕把它投入生产。

注意:我正在针对MS SQL Server进行测试,但它也应该在Oracle中运行。

这是处理此问题的正确方法吗?

0 个答案:

没有答案