Python Pickle 在使用从 sql table 读取的数据加载时给出 EOFError

Python Pickle gives EOFError when using loads with data read from sql table

我正在尝试加载一个 BLOB 保存字段 - 使用以下代码从 mysql 读取相同内容后嵌入:

try:
    print("executing query >> " + str(sql))
    cursor.execute(sql)

    for tag, embedding in cursor.fetchall():
        result['TAG'] = tag
        result['EMBEDDING'] = pickle.loads(embedding)

except Exception as e:
    print(e)
    traceback.print_exc()

错误:

Traceback (most recent call last):
  File "/home/xxx/sql_test.py", line 44, in get_existing_embeddings
  result['EMBEDDING'] = pickle.loads(emb)
  EOFError: Ran out of input
  File "/home/xxx/SETUP/pycharm-community-2018.2.1/helpers/pydev/pydevd.py", line 1664, in <module>
  main()

运行 超出输入

但是,在调试时我可以看到嵌入变量不为空:附加快照:

保存 BLOB 字段的代码:

data["EMBEDDING_DATA"]=numpy.array(image_embedding).dumps()
..
.
sql_stmt="INSERT INTO "+DatabaseCredentials.DATABASE+"."+DatabaseCredentials.EMBEDDING_TABLE_NAME
sql_stmt = sql_stmt + " (TAG ,DOMAIN,PICTURE_ID,IMAGE_PATH,EMBEDDING_DATA,EMBEDDING_BASE_RESOLUTION,CREATED_AT,STATUS) "
sql_stmt = sql_stmt + " VALUES (%s,%s,%s,%s,%s,%s,%s,%s)"
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
args = (data["TAG"],
        data["DOMAIN"],
        data["PICTURE_ID"],
        data["URL"],
        data["EMBEDDING_DATA"],
        data["EMBEDDING_DATA_RESOLUTION"],
        now,
        data["STATUS"]
        )
try:
    cursor.execute(sql_stmt,args)
    res = db.commit()
except connector.errors as e:
    print(e)

我在查询 sql table 时也可以看到此数据。我错过了什么?

原因是 sql table 中的 blob 字段不适合我试图保存的 pickle dump。我将 sql table 中的列更改为 longblob,现在它可以正常工作了。