将Java字节数组转换为Python字节数组

kir*_*hey 1 python java mysql binary byte

我知道,如果我想出这个或者有人告诉我,那将是一个额头拍。在发布任何问题之前,我会尝试至少三个小时并进行大量搜索。有一些提示很接近,但是我采用/尝试过的任何方法似乎都没有用。

我正在从Java中获取一个byte [],然后使用Flask通过JSON(与Gson)将其传递给python JSON。收到时,此byte []作为整数列表存储在python对象中,但是现在我需要将其发送到MySQLdb并将其存储为blob。数据内容是二进制文件数据。

如何将python整数列表[1,2,-3,-143 ....]转换为可以存储在MySQL中的内容?我已经尝试过bytearray()和array.array(),但是当我直接从对象访问列表并尝试将其转换为字符串以存储MySQLdb时,这些命令令人窒息。

任何链接或提示,我们将不胜感激。

cob*_*bal 5

您可以将其连接为一个字节字符串(只是python 2.x下的字符串)。如果不是最有效的话,最简单的方法就是修改数据,然后转换为chars并加入。就像是:

data = [1,2,-3,-143, ...]
binData = ''.join(map(lambda x: chr(x % 256), data))
Run Code Online (Sandbox Code Playgroud)
binData = ''.join(map(lambda x: chr(x % 256), attach.attcoll))
    sql_stmt = """INSERT INTO attachments (attno,filename,fileextension,projNo,procNo,wpattachment) \
    VALUES ('%s','%s','%s','%s','%s','%s') ON DUPLICATE KEY UPDATE filename='%s',fileextension='%s'""" % (attach.attno,\
    attach.filename,attach.fileextension,attach.projNo,attach.procNo,binData,attach.filename,attach.fileextension)

    try:
        cursor.execute(sql_stmt)
        conn.commit()
        cursor.close()
        conn.close()
        return 'SUCCESS'
    except MySQLdb.Error:
        cursor.close()
        conn.close()
        print "My SQL cursor execute error."
        return 'FAILURE'
Run Code Online (Sandbox Code Playgroud)