SQLite Forum

python sqlite3 not support numpy type?
Login
import numpy as np
import sqlite3

DB = __file__.replace('.py','.db')

tablename = 'why'

fieldnames = 'ttt'


a = np.array([8.292553,16.242676,16.328308],dtype = np.float32)

v = []

for i in range(3):

    result = [a.mean()] 

    # result = [float(a.mean())] #this is ok,but why? not support numpy?

    result.append(i+1)

    v.append(result)

print(v)

conn = sqlite3.connect(DB)

cur = conn.cursor()

cur.execute('''CREATE TABLE if not exists {table}
            (id         INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
            {field}     FLOAT);'''.format(table=tablename,field=fieldnames))

conn.commit()

for i in range(3):

    cur.execute('''INSERT INTO {table}({keys}) VALUES (0.3);'''.format(table=tablename,keys=fieldnames))

conn.commit()

try:

    sql = 'UPDATE {table} SET {field} = ? where id = ?;'

    cur.executemany(sql.format(table=tablename,field=fieldnames),v)

    print(v)

    conn.commit()

    print('SUCCESS:UPDATE [[{table}] {field}]'.format(table=tablename,field=fieldnames))

except:

    print('ERROR:UPDATE [[{table}] 
{field}]'.format(table=tablename,field=fieldnames))

cur.execute('select * from {table} limit 3'.format(table=tablename))

print(cur.fetchall())

conn.close()



out:
[[13.621179, 1], [13.621179, 2], [13.621179, 3]]

[[13.621179, 1], [13.621179, 2], [13.621179, 3]]

SUCCESS:UPDATE [[why] ttt]

[(1, b'Y\xf0YA'), (2, b'Y\xf0YA'), (3, b'Y\xf0YA')]