python - 将 bytearray 从 VARBINARY(16) 列转换为 IP 地址

标签 python arrays byte pyodbc vertica

我需要从 HP Vertica 数据库中提取大量数据并将其保存到文件中。我正在将 Vertica 的官方 ODBC 驱动程序与 pyodbc 结合使用。

这是我到目前为止所做的:

cnxn = pyodbc.connect('DRIVER={Vertica};SERVER=localhost;DATABASE=db;UID=user;PWD=pw')
cnxn.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
cnxn.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
cnxn.setencoding(str, encoding='utf-8')
cnxn.setencoding(unicode, encoding='utf-8')
cur = cnxn.cursor()
cur.execute("SELECT * FROM schema.table LIMIT 3")

然后我读取数据

for row in cur:
    print row

大多数字段都可以正常返回 - unicode 文本、数字或日期时间。然而,对于存储 IP 地址的字段,我得到以下结果:

bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\no\x19\\')

如何将其转换为文本?

非常感谢任何帮助!

谢谢!

最佳答案

我看到有一个被接受的答案,但是......对于所有其他答案:

如果您的数据在 Vertica 中,非常要做的第一件事就是查看详细的 SQL 引用手册。在本例中,您将找到一个内置函数,用于将 VARBINARY 列表示的 IPv6 地址转换为字符串。

更简单、更快:

SELECT V6_NTOA(your_column_here) ;

关于python - 将 bytearray 从 VARBINARY(16) 列转换为 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46475449/

相关文章:

python - Raspberry Pi 3 上的 Google Assistant 段错误

python - 如何在 Jupyter 中从 PILLOW 导入图像?

javascript - JS reduce - 仅对对象中的数组长度求和

javascript - 如何使用 Every() 在 Javascript 中返回一个新数组?

python - 将装饰器附加到类中的所有函数

python - mongoengine 保存时操作错误

java - 将2个字符串转换为2个数组,结果为奇数和偶数,数字在java 7中

java - 如何在 Java 中将 float 转换为 4 个字节?

java - 为什么 jvm 在压入堆栈之前将 byte 和 short 扩展为 int?

Delphi:将 TByte 转换为 AnsiString 中相应的十六进制值