I have a question about inconsistency in unicode handling when using a
bindparam explicitly and when using a literal when constructing my
query. It appears that if I use a unicode object in the actual query
whereclause, the convert_bind_param function of the base String will
get called(query1). However, if I use a bindparam in the whereclause
and then pass in the unicode object as the bindparam,
convert_bind_param is not called(query2).

The code below demonstrates what I am talking about. Is there a reason
that these two ways of constructing a query should have inconsistent
behavior? If I am missing something, I would appreciate any info that
would make it clear to me as to why this is the expected behavior.

Thanks,
DY

import sqlalchemy
meta = sqlalchemy.DynamicMetaData()
meta.connect ('mysql://some_dsn')

test = sqlalchemy.Table('my_test_table', meta,
        sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True),
        sqlalchemy.Column ('name', sqlalchemy.Unicode (255)),
        mysql_engine='InnoDB',
)
query1 = sqlalchemy.select([test],
        sqlalchemy.and_ (
        test.c.id == sqlalchemy.bindparam ('id'),
        test.c.name == u'\u201csolutions\u201d',
#option 1
        )
)

results = query1.execute(id=1)

query2 = sqlalchemy.select([test],
        sqlalchemy.and_ (
        test.c.id == sqlalchemy.bindparam ('id'),
        test.c.name == sqlalchemy.bindparam('name'),
        )
)

results = query2.execute(id=1, name=u'\u201csolutions\u201d')


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to