2016-08-17 37 views
0

sqliteデータベースにnumpy配列を格納する際に問題があります。私は名前とデータを持つ1つのテーブルを持っています。Pythonの問題でnumpy配列をsqlite3データベースに格納する

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', b'\xccX+\xa8.\x03\xa4?\xf7\xda[\x1f ..., x10l\xc7?\xbf\x14\x12\)] 

これで問題は何ですか?

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

私はこれを持っていますかありがとうございました。

P.S.私はここからPython insert numpy array into sqlite3 databaseの解決策を試しましたが、うまくいきませんでした。私の数が少ない配列は、HOG(方向付けされた勾配のヒストグラム)を持つs​​kimage(scikit-image)ライブラリから計算されています。たぶんそれは問題です... opencv3から計算して保存しようとしましたが、同じ問題があります。

+0

リンク内のソリューションがどのように機能しなかったかを示す必要があります。何を試してみましたか?なにが問題だったの? – hpaulj

+0

私は自分のデータ型を作成して変換し、データベースからデータを挿入して読み込むためにunutbuの答えを試しました。結果は上記の私の質問と同じでした。 numpyのndarrayをデータベースに保存しますが、読んだら何らかの形でエンコードされます。 – Eloah

+0

配列のデータバッファのバイト表現を保存しているのだろうかと思います。この値を 'data.tostring()'と比較してください。 – hpaulj

答えて

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]) 

、これは有望に見えます。

関連する問題