Ani*_*Dey 3 python sql connector pandas hashbytes
我们的旧 sql 遗留代码之一,使用 HASHBYTES 函数和 sha2_256 转换 sql 中的数字列。
整个过程正在转移到 python,因为我们在遗留工作之上加入了一些高级用法。但是,在使用连接器时,我们调用了相同的 sql 代码,即 HASHBYTES('sha2_256',column_name) id 返回带有大量垃圾的值。
在 sql 中运行代码导致此
Column Encoded_Column
101286297 0x7AC82B2779116F40A8CEA0D85BE4AA02AF7F813B5383BAC60D5E71B7BDB9F705
Run Code Online (Sandbox Code Playgroud)
从 python 运行相同的 sql 查询结果
Column Encoded_Column
101286297
Run Code Online (Sandbox Code Playgroud)
b"z\xc8+'y\x11o@\xa8\xce\xa0\xd8[\xe4\xaa\x02\xaf\x7f\x81;S\x83\xba\xc6\r^q\xb7\xbd\xb9\ xf7\x05"
代码是
Select Column,HASHBYTES('SHA2_256', CONVERT(VARBINARY(8),Column)) as Encoded_Column from table
Run Code Online (Sandbox Code Playgroud)
我尝试过通常的垃圾清除,但没有帮助
你得到了正确的结果,但显示为原始字节(这就是为什么你有 b in b"...")。
查看SQL的结果,您的数据是用hexadecimal编码的。
因此,要转换 python 结果,您可以执行以下操作:
x = b"z\xc8+'y\x11o@\xa8\xce\xa0\xd8[\xe4\xaa\x02\xaf\x7f\x81;S\x83\xba\xc6\r^q\xb7\xbd\xb9\xf7\x05"
x.hex().upper()
Run Code Online (Sandbox Code Playgroud)
结果将是:
'7AC82B2779116F40A8CEA0D85BE4AA02AF7F813B5383BAC60D5E71B7BDB9F705'
Run Code Online (Sandbox Code Playgroud)
这就是您在 SQL 中所拥有的。
您可以在此处阅读有关Python 代码中不存在0x的SQL结果开头的更多信息。
最后,如果您正在使用 Pandas,您可以使用以下命令转换整列:
'7AC82B2779116F40A8CEA0D85BE4AA02AF7F813B5383BAC60D5E71B7BDB9F705'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
298 次 |
| 最近记录: |