将 blob 转换为字节 SQLite3 Python

问题描述 投票:0回答:1

需要在 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()
,但没有按预期工作。

python pandas blob sqlite3-python
1个回答
0
投票

看起来

pandas
错误地将
bytes_as_blob
列读取为
str

您可以使用

dtype
列告诉它不要这样做,例如:

df = pd.read_sql_query(sql_statement, conn, dtype={"bytes_as_blob":bytes})
© www.soinside.com 2019 - 2024. All rights reserved.