Форум сайта python.su
0
doza_andВы сможете помочь с написанием кода?
. с компенсацией потраченного времени…
Офлайн
253
Время бесценно. Но помочь могу.
Офлайн
0
начал разбираться с SQLite3 и рпишел к выводу , что у меня база будет иметь 3000 строк в сутки, а это 300 килобайт базы данных файл me.db через месяц это будет уже 8,78 мегабайт база… насколько это будет проблематично для обработки и выборки… при условии что выборку придется делать иногда и за большой промежуток времени, т.е. пару месяцев, а иногда и за сутки, например….
целесообразно ли использование SQLite3 ?
Офлайн
72
Sova9МБ со свистом помещаются в ОЗУ. Какие могут быть проблемы на таких мизерных объемах?!
через месяц это будет уже 8,78 мегабайт база… насколько это будет проблематично для обработки и выборки…
Офлайн
253
SovaВозьмите лучше hdf5. Распределите сразу массивы и пишите показания датчиков в нужные места массива. Кода будет на порядок меньше чем в sqlite3. Скорость выборки тоже будет раз в 10 выше , да и объем базы будет меньше. Я предполагаю что запись идет ровно раз в секунду.
начал разбираться с SQLite3
SovaРазговор беспредметен пока вы не скажете как собираетесь обрабатывать данные, сколько времени можно потратить на обработку запроса. У Sqlite3 есть принципиальный недостаток. Вы получите питоновские тьюплы и вынуждены будете обрабатывать данные в питоновком цикле. Это очень медленно, гораздо лучше (будет работать в десятки раз быстрее) получить numpy.array и выполнять вычисления с ним.
насколько это будет проблематично для обработки и выборки
Офлайн
0
есть ли какие то ограничения на размер базы SqLite в мегабайтах.. или например 1200000 строк в 6 столбцах?
Офлайн
24
Вот тут все ограничения. Максимальный размер файла базы - 140 терабайт.
Отредактировано ayb (Фев. 29, 2016 09:12:10)
Офлайн
0
aybДелал выборки из базы данных в 1200000 строк и шесть столбцов но выборки при помощи конструкции
Вот тут все ограничения. Максимальный размер файла базы - 140 терабайт.
import sqlite3 import datetime dt = datetime.datetime.now() dat = dt.strftime('%Y %m %d')# дата выборки timot = '00 00 00'# время выборки от timdo = '00 59 00'# время выборки до vv1 = 0 vv2 = 0 vv3 = 0 #data = dt.strftime('%Y %m %d')#текущая дата #time1 = dt.strftime('%H %M %S')#текущее время conn = sqlite3.connect('tutorial3.db') #conn = sqlite3.connect(':memory:') c = conn.cursor() #conn.execute("create table if not exists person(data, time1, bunker, time2, status, ves)") # проверка кол - ва итераций i1 = 0 i2 = 0 i3 = 0 # проверка времени выполнения выборки dt = datetime.datetime.now() timedo = dt.strftime('%H %M %S')#текущее время до выборки c.execute('select * from person order by time1') for row in c: # print ('-'*10) # print ('ID:', row[2],' ',row[5]) if row[2]==1 and timot<=row[1]<=timdo: vv1 = vv1 + row[5] i1=i1+1 if row[2]==2 and timot<=row[1]<=timdo: vv2 = vv2 + row[5] i2=i2+1 if row[2]==3 and timot<=row[1]<=timdo: vv3 = vv3 + row[5] i3=i3+1 # print ('First name:', row[1]) # print ('Second name:', row[2]) # print ('-'*10) # print ('co:', row[0]) c.close() # проверка времени выполнения выборки dt = datetime.datetime.now() timeposle = dt.strftime('%H %M %S')#текущее время после выборки print ('I = ',i1,' sum1 =',vv1) print ('I = ',i2,' sum2 =',vv2) print ('I = ',i3,' sum3 =',vv3) print ('время до =',timedo) print ('время после =',timeposle)
Офлайн
24
Офлайн
253
SovaДа вы вообще не по тому пути идете на мой взгляд.
Как сделать выборку данных локаничнее чтоб меньше времени занимала?
import h5py import numpy as np import time # создание базы n=1200000 data=np.zeros((n,6),dtype='f') with h5py.File("a.h5","w") as f: f["a"]=data # получаем базу 27Мб вместо 57 # выборка t0=time.clock() with h5py.File("a.h5","r") as f: selected=f["a"][1000000:1200000] t1=time.clock() print(t1-t0) >>> 0.00600972250874 # расчет t0=time.clock() selected.sum(axis=0) t1=time.clock() print(t1-t0) >>> 0.0124684806049
Отредактировано doza_and (Март 6, 2016 16:42:47)
Офлайн