将具有多个八进制的bytea转换为整数

时间:2017-02-11 22:50:16

标签: python sql postgresql

我正试图从Postgres DB中获取一个存储为bytea的值 值是VLAN ID(所以整数在1-4096之间)。

但是,它存储在db(作为示例)中:

\000\000\001\221 (equal to 401)

我想让我的SQL查询返回整数值,如果可能的话,返回我的python代码。

经过一些搜索后,我可以使用get_byte来获取这4个octals中的一个(通过指定位置):

select get_byte(sub.datavlan_bytes,3) AS vlan -> this gives me the value of /221 (145)

然而,我无法获得全部价值。

是否有一种很好的方法可以在选择查询中获取数据,还是需要在我的脚本中进行?

2 个答案:

答案 0 :(得分:2)

通过强制转换SQL:

jQuery(function ($) {
    var x, y;
    $(document).on('mousemove', '#waldo', function (event) {
        x = event.pageX;
        y = event.pageY;
        $("#coords").html("(X: " + x + ", Y: " + y + ")");
    });
});

答案 1 :(得分:0)

Postgres 9+为hex值提供bytea格式。如果您可以将bytea_output连接设置设置为hex(这是默认设置,因此它可能已经是......),您可以找回一个字符串,该字符串可以提供给Python的int(..., 16)功能。这将直接获得你的401。

修改:Postgres文档:https://www.postgresql.org/docs/9.0/static/datatype-binary.html