[python] работа со списком посредством SQL
От: Аноним  
Дата: 13.12.10 11:39
Оценка:
Нет ли такой библиотеки, которая отфильтрует список, содержащий однотипные объекты на основе заданного SQL запроса

Что-нибудь вроде:
>>> sql = "SELECT field1,field2 FROM List WHERE field3 = 0"
>>> filteredList = getListFromSomewhere( sql )
>>> print "\n".join( [ f.field3 for f in filteredList ] )
0
0
...
0
>>>

Зачем:
Пользователь работает из комманд лайна и получает довольно обширные списки с большим количеством полей. Очень часто он хочет, чтобы инормация была отфильтрована или соответствующим образом сгруппирована. При чем, желательно это сделать это легко и быстро. В идеале пользователь вообще мало знаком с питоном. Сейчас в качестве параметра ф. getListFromSomewhere передается лямбда. Но мне кажется задание правил фильтрации через SQL гораздо более удобным в данной ситуации. Решение, вроде сохранить сначала весь список в таблицу SQLite а потом извлечь оттуда нужные данные, кажется костылем. Может я не прав?
Re: [python] работа со списком посредством SQL
От: Temoto  
Дата: 13.12.10 12:58
Оценка:
А>Нет ли такой библиотеки, которая отфильтрует список, содержащий однотипные объекты на основе заданного SQL запроса

А>Что-нибудь вроде:

>>>> sql = "SELECT field1,field2 FROM List WHERE field3 = 0"
>>>> filteredList = getListFromSomewhere( sql )
>>>> print "\n".join( [ f.field3 for f in filteredList ] )
А>0
А>0
А>...
А>0
>>>>

А>Зачем:

А>Пользователь работает из комманд лайна и получает довольно обширные списки с большим количеством полей. Очень часто он хочет, чтобы инормация была отфильтрована или соответствующим образом сгруппирована. При чем, желательно это сделать это легко и быстро. В идеале пользователь вообще мало знаком с питоном. Сейчас в качестве параметра ф. getListFromSomewhere передается лямбда. Но мне кажется задание правил фильтрации через SQL гораздо более удобным в данной ситуации. Решение, вроде сохранить сначала весь список в таблицу SQLite а потом извлечь оттуда нужные данные, кажется костылем. Может я не прав?

То есть нужна библиотека, которая применит SQL запрос не к базе данных, а к вашему списку? Очень вряд ли такая есть.

Отчасти, наверное, потому что в питон уже встроена подобная функциональность.

print "\n".join( (f.field1, f.field2) for f in List if f.field3 == 0 )


Пользователи могут вводить подобные выражения.
Re[2]: [python] работа со списком посредством SQL
От: Аноним  
Дата: 13.12.10 14:58
Оценка:
T>
T>print "\n".join( (f.field1, f.field2) for f in List if f.field3 == 0 )
T>


T>Пользователи могут вводить подобные выражения.


Вот хотелось бы их от этого избавить как раз. В идеале, хотелось бы, чтобы пользователь работал не напрямую с интерпретатором питона, а со строкой ввода, которая уже обрабатывалась бы скриптом.
Юзер — пытается диагностировать проблему в некой системе, питон — лишь вспомогтаельная прослойка. И по возможности нужно этого самого юзера избавить от лишних подробностей.
Re[3]: [python] работа со списком посредством SQL
От: Temoto  
Дата: 13.12.10 15:41
Оценка:
T>>
T>>print "\n".join( (f.field1, f.field2) for f in List if f.field3 == 0 )
T>>


T>>Пользователи могут вводить подобные выражения.


А>Вот хотелось бы их от этого избавить как раз. В идеале, хотелось бы, чтобы пользователь работал не напрямую с интерпретатором питона, а со строкой ввода, которая уже обрабатывалась бы скриптом.

А>Юзер — пытается диагностировать проблему в некой системе, питон — лишь вспомогтаельная прослойка. И по возможности нужно этого самого юзера избавить от лишних подробностей.

Вам виднее, конечно, чем именно там недовольны пользователи и зачем их избавлять от питона. (потому что если их устраивает, то ничего трогать и не надо)

Можно не давать лишних подробностей; можно сообщить только то, что необходимо для решения повседневных задач.

Строку ввода, которая обрабатывается скриптом сделать очень легко. Вопрос в том как будет обрабатываться то, что они введут. Возможно, вы будете велосипедить ещё один питон/lua.
Re[4]: [python] работа со списком посредством SQL
От: Аноним  
Дата: 14.12.10 07:00
Оценка:
T>Вопрос в том как будет обрабатываться то, что они введут. Возможно, вы будете велосипедить ещё один питон/lua.

Вот! Именно хотелось бы избежать велосипедов. SQL вполне себе подходит для описания правил фильтрации и сортировки. Ну раз нет либы, на нет — и суда нет )).
А была бы такая либа полезна более чем в одном ( моем ) случае?
Re[5]: [python] работа со списком посредством SQL
От: Temoto  
Дата: 14.12.10 11:37
Оценка:
T>>Вопрос в том как будет обрабатываться то, что они введут. Возможно, вы будете велосипедить ещё один питон/lua.

А>Вот! Именно хотелось бы избежать велосипедов. SQL вполне себе подходит для описания правил фильтрации и сортировки. Ну раз нет либы, на нет — и суда нет )).

А>А была бы такая либа полезна более чем в одном ( моем ) случае?

Python/Lua в данном случае не велосипед, потому что они уже написаны.

Такая либа есть. Как вы правильно заметили в первом сообщении, это SQLite. Он может держать базу в памяти.
Re[5]: [python] работа со списком посредством SQL
От: wildwind Россия  
Дата: 14.12.10 14:50
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вот! Именно хотелось бы избежать велосипедов. SQL вполне себе подходит для описания правил фильтрации и сортировки. Ну раз нет либы, на нет — и суда нет )).


Есть LogParser, делает как раз это — применяет SQL к данным из не-SQL источника. Вызывается либо как консольное приложение, либо через COM-интерфейсы, так что в некотором смысле либа.

P.S. А то, что "SQL вполне себе подходит", это ты решил или таки пользователи? А то здесь может ждать большое разочарование...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.