使用python问题在sqlite3数据库中存储numpy数组

时间:2016-08-17 10:34:36

标签: python arrays numpy sqlite

我在sqlite数据库中存储numpy数组时遇到问题。我有1个名称和数据表。

import sqlite3 as sql
from DIP import dip      # function to caclculate numpy array
name = input('Enter your full name\t')
data = dip()
con = sql.connect('Database.db')
c = con.cursor()

c.execute("CREATE TABLE IF NOT EXISTS database(Name text, Vein real )")
con.commit()
c.execute("INSERT INTO database VALUES(?,?)", (name, data))
con.commit()
c.execute("SELECT * FROM database")
df = c.fetchall()
print(data)
print(df)
con.close()

一切都很好,但是当存储数据而不是:

[('Name', 0.03908678  0.04326234  0.18298542 ...,  0.15228545  0.09972548   0.03992807)]

我有这个:

[('Name', b'\xccX+\xa8.\x03\xa4?\xf7\xda[\x1f ..., x10l\xc7?\xbf\x14\x12\)]

这有什么问题?谢谢。

P.S。我从这里尝试了解决方案Python insert numpy array into sqlite3 database,但它没有用。我的numpy数组是用带有HOG的skimage(scikit-image)库(面向渐变的直方图)计算出来的。也许这是个问题...... 还试图从opencv3计算和存储它,但也有同样的问题。

1 个答案:

答案 0 :(得分:0)

假设它正在将data.tostring()保存到数据库,我尝试用fromstring解码它。

使用您显示的字符串,并删除我得到的几个字节:

In [79]: np.fromstring(b'\xccX+\xa8.\x03\xa4?\xf7\xda[\x1f\x10l\xc7?', float)
Out[79]: array([ 0.03908678,  0.18298532])

至少有一个匹配的数字,所以看起来很有希望。