我正在尝试使用pyobdc从ibmi系列服务器(以前是as400)中提取数据。我使用的是obdc数据源管理器和iseries访问odbc驱动程序。代码如下:
import pyodbc
conn = pyodbc.connect('DRIVER={iSeries Access ODBC Driver};system=SERVER;UID=USER;PWD=PASS;unicode_results=True')
conn.setencoding('utf-8')
c1=conn.cursor()
c1.execute("""select TEST from TESTER.ITEMTEST where TEST='005911'""")
<pyodbc.Cursor object at 0x02A1F460>
rows = c1.fetchall()
print(rows[0])
返回的内容如下:
(b'\xf0\xf0\xf5\xf9\xf1\xf1@@@@@',)
据我所知,这是一个pyodbc.row对象。我在网上到处搜索,找不到任何能解决我问题的东西。
我们公司的一位系统开发人员说,也许obdc管理员中有某种设置我需要更改,但似乎所有的设置都是正确的。
以下是obdc管理员的一些屏幕截图以及我如何设置驱动程序:
屏幕
有没有办法将pyodbc.row对象转换为数据库中包含的实际值?或者我还缺什么?
我试过:
rows[0].TEST
它仍然返回一个pyodbc.row对象。我只想返回从服务器检索到的实际值,而不是pyodbc.row对象。
当我使用:
c1.description
我得到:
(('TEST', <class 'bytearray'>, None, 15, 15, 0, False),)
我应该得到的实际值是:005911
1条答案
按热度按时间zdwk9cvp1#
我换了连接线,把一切都修好了。我要加的就是:translate=1