Форум сайта python.su
Добрый день, уважаемые друзья-коллеги!
У меня возник вопрос по правильному описанию структур данных.
Пишу библиотеку для того, чтобы раз и навсегда доступаться к SQLite удобным мне способом.
В частности, в классе присутствует и функция для чтения больших массивов данных:
# -*- coding: utf-8 -*- """ Класс для sqlite, чтобы просто работать """ import sqlite3 from pandas import DataFrame class sqlite_file (): """ Создание: sql = sqlite_file('test.db'), то есть указываем только имя файла Запись: sql.record (table = 'Имя таблицы', Поле1 = Значение1, Поле2 = Значение2) ... или, например: sql.record (table = 'config', login = 'root', password = 'bastard', enabled = 'Nope') """ def __init__ (self, filename): self.mybase = sqlite3.connect(filename) self.columns = {} self.debug = '0' # <--------------- Здесь кое-что пропущено --------------> def read (self, table, **args): """ Пример использования: mydata = sql.read (table = 'quotes', fields = ['secid', 'time', 'date', 'close', 'volume', 'oi']) а на выходе - таблица: secid time date close volume oi 0 RIU3 11:00 27.09.2013 144741 412 1223 1 RIU3 11:00 27.09.2013 144813 412 1223 ... 7 RIU3 11:00 27.09.2013 144576 412 1223 8 RIU3 11:00 27.09.2013 144683 412 1223 9 RIU3 11:00 27.09.2013 144874 412 1223 """ request = 'SELECT' for f in args['fields']: # Это если все, а если нет, то дописать!!!! request += ' [%s],' % f request = request[:-1] + ' FROM [%s]' % table try: sqlres = self.mybase.execute(request) except: print 'Empty table!' return -1 result = [] if sqlres: for res in sqlres: result.append (res) data = DataFrame (result, columns=args['fields']) return data
import mylib sql = sqlite_file('test.db') mydata = sql.read (table = 'quotes', fields = ['secid', 'time', 'date', 'close', 'volume', 'oi']) print (mydata [0]['volume'])
Отредактировано pmus (Окт. 22, 2013 12:03:22)
Офлайн
pmusОтвет очевиден. Надо написать свой Pandas. Из вашего поста непонятно чем он вас не устраивает, следовательно неясно что вам посоветовать.
то же самое, но без Pandas?
mydata=hdf_opened_file["volume"][0]
pmusВ приведенном примере как мне показалось после беглого просмотра доступ организован не через SQLite.
раз и навсегда доступаться к SQLite удобным мне способом.
Офлайн
doza_and
Из вашего поста непонятно чем он вас не устраивает
print (mydata [0]['volume'])
doza_and
В приведенном примере как мне показалось после беглого просмотра доступ организован не через SQLite.
import sqlite3 .... self.mybase = sqlite3.connect(filename) ... sqlres = self.mybase.execute(request)
Офлайн
По поводу SQLite да вы из нее данные черпаете, но вы их полностью в память засасываете. В этом случае вам вообще не важно какой источник, база, файл, ввод с консоли и т.п.
Базы тем и хороши что вы не обязаны все загружать в память.
Если вы готовы все держать в памяти то:
column_names=... result={i:[] for i in column_names} for vals in cursor: for k,v in zip(column_names,vals): result[k].append(v)
v=result["a"][0]
Офлайн
Если вы готовы все держать в памяти то:Готов, это для биржевых данных, они мне все нужны.
Офлайн