Hello, I've created a TypeDecorator for use with postgresql's JSON type, for the purpose of adapting it to sqlite and it's producing an incorrect bind parameter when using JSON's column index operation.
I'm using sqlalchemy 0.9.4 (I haven't been able to install a more updated version as yet, but I didn't see anything mentioning behavior like this in the changelogs so I thought I'd ask the mailing list). I have the following class: class DynamicProperties(Base): __tablename__ = 'dynamic_properties' guid = Column(Text, primary_key=True) dynamic_properties = Column(JSONDict) Where JSONDict is simply this: class JSONDict(TypeDecorator): """Backend-agnostic JSON type Uses native JSON type on postgres or manually serializes/deserializes JSON to Text on others """ impl = JSON I removed the actual implementation of the TypeDecorator since this alone seems to be enough to trigger the issue. If I create a query like this: >>> q = session.query(DynamicProperties.dynamic_properties['vol_state']) >>> q.all() It produces this: 2015-10-28 02:51:48,445 - sqlalchemy.engine.base.Engine.db - INFO - base:: _execute_context:903 - SELECT dynamic_properties.dynamic_properties -> %( dynamic_properties_1)s AS anon_1 FROM dynamic_properties 2015-10-28 02:51:48,445 - sqlalchemy.engine.base.Engine.db - INFO - base:: _execute_context:905 - {'dynamic_properties_1': '"vol_state"'} It looks like the "vol_state" bind parameter is actually being serialized and this always produces a result of (None,) even though the 'vol_state' key is in the JSON dict. If I change the Column type in the class definition from my JSONDict to plain old JSON: class DynamicProperties(Base): __tablename__ = 'dynamic_properties' guid = Column(Text, primary_key=True) dynamic_properties = Column(JSON) Then the same query produces a correctly quoted bind param: 2015-10-28 02:57:05,060 - sqlalchemy.engine.base.Engine.xmsdb - INFO - base ::_execute_context:903 - SELECT dynamic_properties.dynamic_properties -> %( dynamic_properties_1)s AS anon_1 FROM dynamic_properties 2015-10-28 02:57:05,061 - sqlalchemy.engine.base.Engine.xmsdb - INFO - base ::_execute_context:905 - {'dynamic_properties_1': 'vol_state'} and a corresponding correct result: (u'active',). Any clues? TIA, Uri -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.