Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python转换来自db2查询的字节数组信息_Python_Sql_Bytearray_Ibm Midrange_Db2 400 - Fatal编程技术网

使用python转换来自db2查询的字节数组信息

使用python转换来自db2查询的字节数组信息,python,sql,bytearray,ibm-midrange,db2-400,Python,Sql,Bytearray,Ibm Midrange,Db2 400,我正在使用iSeries Access ODBC驱动程序尝试对DB2fori运行查询。我想让这些信息更具可读性。如何使用python转换字节数组信息?输出示例如下: >>> cursor.execute("SELECT * FROM QAAPFILE$") <pyodbc.Cursor object at 0x00C6D2C0> >>> for row in cursor: ... print row Example

我正在使用iSeries Access ODBC驱动程序尝试对DB2fori运行查询。我想让这些信息更具可读性。如何使用python转换字节数组信息?输出示例如下:

>>> cursor.execute("SELECT * FROM QAAPFILE$") 
<pyodbc.Cursor object at 0x00C6D2C0>
>>> for row in cursor:
...     print row         


Example Output:
(1, bytearray(b'\xfd@@@@@@@@@'), 1, 1, 8, 9, bytearray(b'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'), bytearray(b'@@@@@@@@@@@@@@@@@@@@'), bytearray(b'\x00<\x02\x82B\x02\x02<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'))
Many more rows
>>cursor.execute(“从QAAPFILE$”中选择*)
>>>对于光标中的行:
...     打印行
示例输出:

(1,bytearray(b),1,1,8,9,bytearray(b),bytearray(b),bytearray,bytearray(b),(b'\x00我不确定您为什么要查看QAAPFILE$,我也不确定从中检索到的数据必须作为
bytearray
检索。但是如果您绝对必须读取原始字节,那么您需要知道的第一件事是,IBM I(as/400、iSeries等)本身就是EBCDIC。'@'是一个信号,表明您需要使用
解码('cp037')
。在代码页37(标准美国EBCDIC,您可能需要针对不同的语言环境稍微调整)中,空格为'\x40',正好与ASCII或UTF-8中的'@'相同

现在,我要说的是,你提供的样本解码不好,所以不幸的是,还有更多的故事。像评论员一样,我需要更多的信息。(例如,仍然很困惑为什么需要查看QAAPFILE$。并且,作为记录,我从未见过或使用过该文件。我已经使用pyODBC多次连接到I,并且我从未使用过
bytearray


编辑:我现在有机会在我工作的机器上查看QAAPFILE$,我可以告诉您,您不会在其中找到可读的字母数字字符。好的,第二列(行元组中的第一个
bytearray
元素)通过正确的解码,它实际上是可读的,但最后一个确实不是,甚至没有使用本机接口直接在服务器上查看它。它实际上只是二进制数据。我无法想象您对这个文件有什么用途。

您应该详细说明“可读”的含义。显然,它将取决于文件的内容ByteArray及其解释方法。我希望将检索到的字节数组信息转换为字母数字字符(英语+数字)。我不知道这些表中存储了什么,需要弄清楚所有内容。文件
QAAPFILE$
包含用于小符号定义的符号集,它与相关。您的库存信息不应存储在
QGPL
(这就是
QAAPFILE$
表所在的位置。按照惯例,任何以“Q”开头的对象名称都是IBM创建的对象。对于旧的打印实用程序,这是一个模糊的系统文件,不会告诉您任何有关库存的信息。请从IT部门获得一些指导。当您确定哪些表(文件)在哪些架构中时(库)您应该查看,尝试使用IBM Data Studio、IBM i Access for Windows Navigator或类似SQL Squirrel的工具查看数据库。并使用提供您所需的数据。使用连接字符串中的“系统命名”连接,以启用“库列表”的使用搜索路径,这样您就不会在Python或SQL代码中硬编码架构名称。我只是以该查询为例。我现在使用DB QS36F,但仍然不知道在哪里可以找到我需要的实际库存/员工数据。我能做的最好的事就是通过模拟器设置查询,并在QS36F中读取这些实时查询。您能给我一些建议吗ore面包屑?谢谢你的解码('cp037')提示,它帮助很大!