Python 3でnumpy整数オブジェクトの値をデータベースに挿入する正しい方法は何ですか? Python 2.7 では、numpy の数値データ型が sqlite にきれいに挿入されますが、Python 3 では挿入されません。
import numpy as np
import sqlite3
conn = sqlite3.connect(":memory:")
conn.execute("CREATE TABLE foo (id INTEGER NOT NULL, primary key (id))")
conn.execute("insert into foo values(?)", (np.int64(100),)) # <-- Fails in 3
np.float タイプは、2 と 3 の両方で問題なく動作するようです。
conn.execute("insert into foo values(?)", (np.float64(101),))
Python 2 では、numpy スカラー整数データ型はもはや int のインスタンスではなく、整数値の浮動小数点数を int に変換することさえあります。
isinstance(np.int64(1), int) # <- true for 2, false for python 3
これが、dbapi が numpy とシームレスに動作しなくなった理由ですか?