Thanks for response!

On 21 янв, 00:29, Michael Bayer <mike...@zzzcomputing.com> wrote:
> 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 
> > athttp://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.

Reply via email to