Я не знаком с Postgres, но функция hex(n)
возвращает строковое представление числового значения n
в шестнадцатеричном формате.На мой взгляд, самый лучший способ объединить это со строкой - это использовать форматные строки.Например:
rv = plpy.execute(plan, [ ( 'foo %s bar' % hex(6827) ) ] )
Если строка действительно находится в переменной с именем string1
, и вам нужно только добавить ее с шестнадцатеричным значением, тогда простая конкатенация с использованием знака + будет работать нормально:
rv = plpy.execute(plan, [ ( string1 + hex(6827) ) ])
Это работает без преобразования, потому что функция hex () возвращает строку.
Если вы на самом деле не хотите хранить строковое представление для печати, а скорее двоичную строку, используйте структурумодуль для создания массива байтов.
import struct
bytes = struct.pack('i', 6827) # Ignoring endianness
Многие люди не понимают, что на самом деле означает хранение чего-либо как «двоичного», и поскольку вы используете тип поля (bytea
), который, кажется,быть предназначенным для двоичного хранения, может быть, это именно то, что вам на самом деле нужно?
Возвращаемое значение из байтов будет строкой, которую вы можете либо объединить с другой строкой, либо продолжить упаковывать больше двоичных значений в.
См. Документацию для модуля struct для получения дополнительной информации!