Найти - Пользователи
Полная версия: Поиск для TurboGears/SQLObject
Начало » Pyramid / Pylons / TurboGears » Поиск для TurboGears/SQLObject
1
SmartKiwi
Приветствую еще раз

Подскажите есть ли готовое решение для того чтобы сделать поиск по полям таблицы(нескольких таблиц) /реализованное с помощью SQLObject/SQLAlchemy

Есть ли решения для поиска для TG?

Владимир
j2a
Не совсем понял вопроса, поясни задачу. Интересует полнотекстовый поиск?
pythonwin
SmartKiwi, вопрос понять сложно :(
может вот это:
Selecting Multiple Objects
Subqueries (subselects)
Select-By Method

или тебе нужно завязать AutoCompleteField и SQLObject ?

PS пожалуйста, опиши вопрос конкретнее - можно своими словами :)
SmartKiwi
Рассказываю подробней о моей задаче:

Есть таблица со свойствами товаров, каждое свойство храниться в соотв поле.
Нужен поиск подстроки по всем полям таблицы.
Таблица живет в MySQL базе

Возможные реализации о которых я подумал:
1) в лоб - записать один запрос типа col1 like ‘%text%’ or col2 like ‘%text%’ or …
минусы - не используется индекс, нужно руками прописывать все поля. Сейчас в таблице около 500 записей, в рабочей версии будет около 3000.
2) собирать текст из всех колонок в отдельную колонку (или даже отдельную таблицы) и сделать для нее full text index и использовать его
минусы - привязка к одной ДБ, точнее переписывать реализацию полнотекстового индекса
3) что-то еще

+ хочется языка запросов (хотя бы с поддержкой логики AND OR)
Подобных поисковых решений для RoR я встречал несколько вариантов в состоянии воткнул и работает… Интересуюсь - есть ли что-то подобное для python? …
j2a
Поскольку MySQL, то можно использовать полнотекстовый поиск средствами этой СУБД.

http://www.mercurytide.com/knowledge/white-papers/django-full-text-search
pythonwin
SmartKiwi
+ хочется языка запросов (хотя бы с поддержкой логики AND OR)
документация == http://sqlobject.org/SQLObject.html
примеры
http://sqlobject.org/SQLObject.html#selecting-multiple-objects
http://sqlobject.org/SQLObject.html#subqueries-subselects
http://sqlobject.org/SQLBuilder.html

есть и AND и OR и субселесты

http://www.google.com/search?hl=ru&q=site%3Asqlobject.org+%22.select%28%22&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

from sqlobject.sqlbuilder import EXISTS, Select
select = Test1.select(EXISTS(Select(Test2.q.col2, where=(Outer(Test1).q.col1 == Test2.q.col2))))

MyTable.select((MyTable.q.name + MyTable.q.surname) == u'value')

MyTable.select(u'value' == MyTable.q.name)
MyTable.select(MyTable.q.name <> u'value')
MyTable.select(OR(MyTable.q.col1 == u'value1', MyTable.q.col2 <> u'value2'))
MyTable.selectBy(name = u'value')
MyTable.selectBy(col1=u'value1', col2=u'value2')
MyTable.byCol1(u'value1') # if col1 is an alternateID

peeps = Person.select(Person.q.firstName=="John")

>>> peeps = Person.select(
... AND(Address.q.personID == Person.q.id,
... Address.q.zip.startswith('504')))
>>> list(peeps)
1/Select : SELECT person.id, person.first_name, person.middle_initial, person.last_name FROM person, address WHERE ((address.person_id = person.id) AND (address.zip LIKE '504%'))
1/COMMIT : auto
[]
>>> peeps = Person.select("""address.id = person.id AND
... address.zip LIKE '504%'""",
... clauseTables=['address'])
peeps = Person.selectBy(firstName="John", lastName="Doe")

Exported Symbols

You can use from sqlobject import *, though you don't have to. It exports a minimal number of symbols. The symbols exported:

From sqlobject.main:

* NoDefault
* SQLObject
* getID
* getObject

From sqlobject.col: * Col * StringCol * IntCol * FloatCol * KeyCol * ForeignKey * EnumCol * DateTimeCol * DateCol * TimeCol * DecimalCol * CurrencyCol

From sqlobject.joins: * MultipleJoin * RelatedJoin

From sqlobject.styles: * Style * MixedCaseUnderscoreStyle * DefaultStyle * MixedCaseStyle

From sqlobject.sqlbuilder:

* AND
* OR
* NOT
* IN
* LIKE
* DESC
* CONTAINSSTRING
* const
* func
from sqlobject.sqlbuilder import LEFTJOINOn
MyTable.select(
    join=LEFTJOINOn(Table1, Table2,
                    Table1.q.name == Table2.q.value))

http://sqlobject.org/SQLObject.html#left-join-and-other-joins
OlDer
SmartKiwi
Есть таблица со свойствами товаров, каждое свойство храниться в соотв поле.
Нужен поиск подстроки по всем полям таблицы.
http://cheeseshop.python.org/pypi/TurboLucene/ не подойдет?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB