Working with bytes.

  • Thread starter Adam T. Gautier
  • Start date
A

Adam T. Gautier

I have been unable to solve a problem. I am working with MD5 signatures
trying to put these in a database. The MD5 signatures are not generated
using the python md5 module but an external application that is
producing the valid 16 byte signature formats. Anyway, these 16 byte
signatures are not nescarrally valid strings. How do I manipulate the
bytes? I need to concatenate the bytes with a SQL statement which is a
string. This works fine for most of the md5 signatures but some blow up
with a TypeError. Because there is a NULL byte or something else. So I
guess my ultimate question is how do I get a prepared SQL statement to
accept a series of bytes? How do I convert the bytes to a valid string
like:

'x%L9d\340\316\262\363\037\311\345<\262\357\215'

that can be concatenated?

Thanks
 
S

Scott David Daniels

Adam said:
I have been unable to solve a problem. I am working with MD5 signatures
trying to put these in a database. The MD5 signatures are not generated
using the python md5 module but an external application that is
producing the valid 16 byte signature formats. Anyway, these 16 byte
signatures are not nescarrally valid strings. How do I manipulate the
bytes? I need to concatenate the bytes with a SQL statement which is a
string. This works fine for most of the md5 signatures but some blow up
with a TypeError. Because there is a NULL byte or something else. So I
guess my ultimate question is how do I get a prepared SQL statement to
accept a series of bytes? How do I convert the bytes to a valid string
like:

'x%L9d\340\316\262\363\037\311\345<\262\357\215'

that can be concatenated?

Thanks
This should probably do:
cursor.execute('SELECT author from stored where md5 = ?', md5)

But you might consider changing your approach to store hex strings:
cursor.execute('SELECT author from stored where md5 = ?',
''.join(['%02x' % byte for byte in md5]))
 
P

Piet van Oostrum

ATG> I have been unable to solve a problem. I am working with MD5 signatures
ATG> trying to put these in a database. The MD5 signatures are not generated
ATG> using the python md5 module but an external application that is producing
ATG> the valid 16 byte signature formats. Anyway, these 16 byte signatures are
ATG> not nescarrally valid strings. How do I manipulate the bytes? I need to
ATG> concatenate the bytes with a SQL statement which is a string. This works
ATG> fine for most of the md5 signatures but some blow up with a TypeError.
ATG> Because there is a NULL byte or something else. So I guess my ultimate
ATG> question is how do I get a prepared SQL statement to accept a series of
ATG> bytes? How do I convert the bytes to a valid string like:

ATG> 'x%L9d\340\316\262\363\037\311\345<\262\357\215'

ATG> that can be concatenated?

Depends what the database accepts. If it supports BLOBs you could use
that. Otherwise convert them to hex, or base64.
See for example the the codecs module or the binascii module.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,181
Messages
2,570,969
Members
47,536
Latest member
VeldaYoung

Latest Threads

Top