繁体   English   中英

使用numpy.genfromtxt读取sqlite3.Binary对象

[英]Reading a sqlite3.Binary object with numpy.genfromtxt

我有一个文本文件,其中包含一个大字符串,该字符串最初是SQL列中的二进制blob。 我想使用numpy.genfromtxt读取数据,并将文本转换为一维numpy数组,然后转换为二进制Blob,稍后再使用converters参数导入到SQL中:

       np.genfromtxt(data, delimiter='\t',
              dtype = [ ("a", 'f8'), ("b", 'U100'), ("c", 'f8') ],
              converters = {1: lambda x: sqlite3.Binary(
                     np.fromstring(x, dtype='f4', sep=' '))})

输入文件将是这样的:

1.0 \\ t1.0 2.0 3.0 \\ t1.0

但这给出了错误信息:

  File "./import_sql.py", line 25, in <module>
    converters = {19: lambda x: sqlite3.Binary(
  File "/usr/lib/python3.4/site-packages/numpy/lib/npyio.py", line 1742, in genfromtxt
    rows = np.array(data, dtype=[('', _) for _ in dtype_flat])
ValueError: cannot set an array element with a sequence

我想让genfromtxt返回一个数组,其中第一和第三列将包含浮点值,第二列包含sqlite3.Binary二进制数据的一维numpy数组。

这不起作用,因此我已将数据从genfromtxt的输出中读取到大字符串中,然后在将数据写入数据库之前进行处理。 是否可以将sqlite3.Binary对象包含在numpy数组中?

您只需要将b列的类型从'U100'切换为object ,就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM