That's SQLite's lower() function. If you'd like to use Python's lower() function, you should call lower() on the string and use column.like(mystring.lower()). But that won't do case-insensitive comparison since you need to call lower() on the database column in the statement.
So you really need to first get this statement to work with pysqlite, to figure out what collation issues may exist with sqlite3 or encoding issues with pysqlite: import sqlite3 connection = sqlite3.connect("/path/to/your/db") cursor = connection.cursor() cursor.execute("SELECT * FROM patients WHERE lower(lastname) LIKE lower(?)", ['Ivanov']) print cursor.fetchall() SQLAlchemy doesn't look at the contents of your string at all with pysqlite, its a pass through. On Jan 20, 2011, at 4:15 PM, proft wrote: > Hello! > > I have gtk application with sqlite db, contain russian words. > > My model > > <code> > class Patient(Base): > lastname = Column(Unicode) > </code> > > Search operation > > <code> > patients = self.session.query(Patient) > > lastname = unicode(self.lastname_entry.get_text()) > if lastname: > patients = patients.filter(Patient.lastname.like(u"%%%s%%" % > lastname)) > </code> > > It perfectly work if i search as 'Ivanov', but didn't return results > if i search 'ivanov'. Note, i search russian words, not english. > > In SQLite manager (firefox plugin) search query > > <code> > SELECT * FROM patients WHERE lastname LIKE "%ivanov%" > </code> > > If i query db and look at value: > > <code> > In [28]: p.lastname > Out[28]: u'\u0413\u0430\u043f\u0447\u0443\u043a' > </code> > > and than check it in query, generated by SQLAlchemy > > <code> > In [29]: patients.filter(Patient.lastname.ilike(u"%%%s%%" % > l.decode('utf-8'))).count() > > 2011-01-20 21:20:30,950 INFO sqlalchemy.engine.base.Engine.0x...1250 > SELECT count(1) AS count_1 > FROM patients > WHERE lower(patients.lastname) LIKE lower(?) > 2011-01-20 21:20:30,950 INFO sqlalchemy.engine.base.Engine.0x...1250 > (u'%\u0433\u0430\u043f\u0447\u0443\u043a%',) > Out[29]: 0 > </code> > > It is looked like lower function in SQLAlchemy didn't understood > cyrillic ... > > Thanks! > > PS: Sorry for my english) > > -- > 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 > sqlalchemy+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- 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 sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.