mariadb 将BLOB对象作为CSV读入Pandas

hjqgdpho  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(118)

我有一个mariaDB数据库,其中包含BLOB对象形式的csv。我想将这些csv读入Pandas,但csv似乎以文本文件的形式存储在它自己的单元格中,如下所示:
| 名称名称名称|数据类型|
| - -|- -|
| csv 1语言|列1、列2、...|
| csv 2病毒|列1、列2、...|
我如何将数据列中的单元格作为它们自己的csv读入Pandas Dataframe ?
这就是我所尝试的:

raw = pd.read_sql_query(query, engine)
cell_as_string = raw.to_string(index=False)
converted_string = StringIO(cell_as_string)
rawdf = pd.read_csv(converted_string, sep = ',')
rawdf

然而,rawdf只是带有空格的字符串,而不是 Dataframe 。
下面是查询返回内容的屏幕截图:

nhn9ugyo

nhn9ugyo1#

我怎么才能...把这些细胞...读入Pandas的数据框
为什么这会很有趣呢?看起来你已经有了答案。你可以选择每一项,打开一个文件进行写入,传输数据,然后向.read_csv请求一个DataFrame。
但是,也许这样做是为了避免虚假的磁盘I/O。read_csv函数接受类似于文件的输入,一些库提供了这样的数据对象。
如果原始问题是reproducible,则它将包含以如下方式开头的代码:

from io import BytesIO, StringIO

default = "n,square\n2,4\n3,9"
blob = do_query() or default.encode("utf-8")
assert isinstance(blob, bytes)

然后,使用二进制BLOB,只需执行以下操作:

f = StringIO(blob.decode("utf-8"))
df = pd.read_csv(f)
print(df.set_index("n"))

如果坚持使用字节,我们可能更喜欢其等价形式:

f = BytesIO(blob)
df = pd.read_csv(f)

相关问题