需要在 SQLite3 中将字节存储/检索为 blob; 列定义如下:
"bytes_as_blob " BLOB,
字节数据使用以下结构存储在表中sqlite3.Binary(some_data)
,通过DB Browser可视化时的数据如下:
<memory at 0x000002157DA24F40>
但是,问题是我无法将 SQLite 中存储的 blob 转换回字节。 用于检索数据的 select 语句是
SELECT uid, bytes_as_blob from a_table LIMIT 10
,SQLite3 的结果将作为 DataFrame 重新调整。数据框列的 dtypes 为 dobject
;
df = pd.read_sql_query(sql_statement, conn)
print(f"type(df.loc[1].iat[0]) = {type(df.loc[1].iat[0]))}") # uid
print(f"type(df.loc[1].iat[1]) = {type(df.loc[1].iat[1]))}") # bytes_as_blob
DF 中 Python 对象的类型为
<class 'str'>
类型
将 blob 转换回字节时是否需要一些东西 - 在这里找不到任何内容https://pandas.pydata.org/docs/user_guide/io.html#io-sql
尝试了
BytesIO(df_cell_value).read()
,但没有按预期工作。
看起来
pandas
错误地将 bytes_as_blob
列读取为 str
。
您可以使用
dtype
列告诉它不要这样做,例如:
df = pd.read_sql_query(sql_statement, conn, dtype={"bytes_as_blob":bytes})