2015-08-26 2 views
0

Одна из моих программ создает очень большой массив numpty, который я хочу сохранить как Blob в базе данных, поскольку доступ к массиву намного быстрее, чем возврат к предыдущему уровню и его создание. Я могу добавить его в базу данных, экономя .npz файл на диск с помощью: -Сохранение структуры Python Numpy как MySQL Blob

import numpy as n 
n.savez(outfile,**kwargs) 

и сохранение этого файла в базу данных с: -

myData = open(outfile, 'rb').read() 
sql = "INSERT INTO myTable (BlobColumn) VALUES (%s)" 
cursor.execute(sql, (myData,)) 

Хотя это работает, кажется, несколько безвкусный, но Я не могу понять, как сохранить его непосредственно в базе данных?

+0

Кроме того, следует ли 'numpty' быть' numpy'? – Paul

+0

@Paul - очевидно опечатка с моей стороны и исправлена. Я проверил базу кода, и у нас нет «numpty» s! –

+0

Разве это невозможно? –

ответ

0

Я знаю, что это довольно скоро - я смог сделать это, используя pandas pd.to_sql. Скажем, у меня есть несколько numpy-массив x, который я хочу вставить в виде столбца blob. После этого вы можете сделать следующее:

row = [x.dumps()] 
data = pd.DataFrame(row, columns = ['myBlob']) 
data.to_sql(name = "myTable", schema = "mySchema", con = dbConnection, if_exists = "append", index = False) 

Это должно поместить каплю в mySchema.myTable с некоторыми cnumpy.core.multiarray ... типа данных.

Смежные вопросы