if u start with the text, would it work? text(abc) + column text(abc) + text(dsa) text(abc) + column + text(abc) text(abc) + column1 + column2
On Thursday 21 August 2008 23:28:54 Jeff wrote: > Hello. I'm trying to writing something to generate full text > searches for postgres. Here's the function I've got so far: > > from sqlalchemy import sql > import operator > > def full_text(fields, text): > def alternate(items): > for i in items[:-1]: > yield i > yield sql.text(" ' ' ") > yield items[-1] > > return "%s @@ to_tsquery('%s')" % ( > sql.func.to_tsvector( > reduce(operator.add, alternate(fields)) > ), text) > > You pass it a list of columns to match against and a full-text > string to search with, and it returns a string that you can use in > a filter() clause. It works fine if you only pass one or two > column names--any more than that, and it dies. At first, I thought > it was something wrong with my generator, but it turns out there's > something wrong with the way I'm concatenating columns and raw > text--that, or there's a bug there. Below is a simple example of > what goes wrong. > > from sqlalchemy import * > > table1 = Table('table1', MetaData(), > Column('col1', String()), > Column('col2', String()), > Column('col3', String()), > ) > > #these work > print table1.c.col1 + table1.c.col2 + table1.c.col3 > print table1.c.col1 + text('sdf') + table1.c.col2 + table1.c.col3 > print table1.c.col1 + text('sdf') + table1.c.col2 > > #these don't > print table1.c.col1 + table1.c.col2 + text('sdf') > print table1.c.col1 + table1.c.col2 + table1.c.col3 + text('sdf') > print table1.c.col1 + text('sdf') + table1.c.col2 + text('sdf') > print table1.c.col1 + text('sdf') + text('sdf') > > The ones that don't work die with "AttributeError: 'NoneType' > object has no attribute 'adapt_operator'" on line 1328 in > sqlachemy/sql/ expression.py > > Is this a bug, or am I doing this wrong? And all that aside, is > there an existing way to generate a full-text search like that? > > Thanks, > Jeff > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---