【发布时间】:2016-08-17 10:34:36
【问题描述】:
我在 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\)]
这有什么问题?谢谢。
附:我从这里Python insert numpy array into sqlite3 database 尝试了解决方案,但没有奏效。我的numpy数组是从带有HOG(定向梯度直方图)的skimage(scikit-image)库中计算出来的。也许这是个问题... 也尝试从opencv3计算和存储它,但有同样的问题。
【问题讨论】:
-
您需要说明链接中的解决方案如何不起作用。你到底尝试了什么?出了什么问题?
-
我尝试了 unutbu 的答案来创建和转换我自己的数据类型,然后从数据库中插入和读取数据。结果与我在上面的问题中描述的相同。它将 numpy ndarray 存储到数据库中,但是当您读取它时,它会以某种方式进行编码。
-
我想知道它是否保存了数组数据缓冲区的字节表示。将此值与
data.tostring()进行比较。
标签: python arrays numpy sqlite