[英]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.