Am 05.04.2015 01:58 schrieb "Mike Bayer" <[email protected]>:
>
>
>
> On 4/4/15 7:47 PM, Daniel Kerkow wrote:
>>
>>
>> 2015-04-05 1:29 GMT+02:00 Mike Bayer <[email protected]>:
>>>
>>>
>>>
>>> On 4/4/15 7:22 PM, Daniel Kerkow wrote:
>>>>
>>>> Hi,
>>>> I am new to SQLAlchemy, doing my first steps with Flask.
>>>> I have the following model using JSONB data type in PostgreSQL.
>>>>
>>>> The JSON data looks like
>>>>
>>>> {'key1': 'value1', 'key2': 'value2'}
>>>>
>>>> The Docs are relatively sparse regarding this topic.
>>>
>>>
>>> the cases you ask for are all described at :
>>>
>>>
http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html#sqlalchemy.dialects.postgresql.JSON
>>>
>>>> How can I query the properties column for containing a specific key or
key=value combination?
>>>
>>>
>>> select([table]).where(table.c.col['key'] == 'somevalue')
>>
>>
>> Seems I am doing something wrong here:
>>
>> select(Record).where(Record.c.properties['key']  == 'value')
>>
>> TypeError: '_BoundDeclarativeMeta' object is not iterable
>>
>> Did I miss to import something? Any preparations?
>
>
>
> First off, if you are using the select() construct, it accepts a list of
things to SELECT from, so select([Record]).
>
> Secondly, "Record" looks a whole lot like a declarative ORM class due to
the "BoundDeclarativeMeta" line; there's a difference between using table
metadata and an ORM class, in this case that the ORM class doesn't use the
.c. attribute.   If you are using ORM classes you'd likely want to use
session.query() which is generally more appropriate.
>
>

Yes, that is exactly what I am looking for. Sorry for missing that. How
would that actually look like in ORM style?
>
>
>
>
>
>
>>
>>>
>>>
>>>> How can I update these?
>>>
>>>
>>> update([table]).values({table.c.col['key'] = 'value'})
>>>
>>>> Can I get a list of unique keys in all records?
>>>
>>>
>>> i dunno.  Whats the Postgresql query you'd like to emit?
>>>
>>
>> In raw psql, the following works:
>> select *
>> from records
>> where properties->>'color' = 'black';
>>
>>
>>>
>>>
>>>
>>>>
>>>> Any help is welcome!
>>>>
>>>> Daniel
>>>>
>>>> class Record(Base):
>>>>
>>>>     """represents single stratigraphic units"""
>>>>
>>>>     # ID of corresponding site:
>>>>     site_id         = db.Column(db.Integer, db.ForeignKey('
public.sites.id'))
>>>>
>>>>     # depth values:
>>>>     depth           = db.Column(db.Numeric, nullable=True)
>>>>     upper_boundary  = db.Column(db.Numeric, nullable=True)
>>>>     lower_boundary  = db.Column(db.Numeric, nullable=True)
>>>>
>>>>     # stratigraphic properties, represented as key/value store
>>>>     properties      = db.Column(JSONB)
>>>>
>>>> --
>>>> 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 [email protected].
>>>> To post to this group, send email to [email protected].
>>>> Visit this group at http://groups.google.com/group/sqlalchemy.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
Google Groups "sqlalchemy" group.
>>> To unsubscribe from this topic, visit
https://groups.google.com/d/topic/sqlalchemy/vk6L6152vE8/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
[email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/sqlalchemy.
>>> For more options, visit https://groups.google.com/d/optout.
>>
>>
>> --
>> 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 [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/sqlalchemy.
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
Google Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit
https://groups.google.com/d/topic/sqlalchemy/vk6L6152vE8/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
[email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to