This worked as described. Thanks again. I have a followup question.  It 
doesn't seem like there's an analog to table.create(checkfirst=True) for an 
Index.  I found this issue 
<https://bitbucket.org/zzzeek/sqlalchemy/issue/527/indexcreate-should-take-checkfirst>
 
that seems to mention having this functionality but it doesn't look like 
it's been implemented? Is there a normal workaround for this?

On Tuesday, July 1, 2014 10:03:40 AM UTC-7, Phillip Aquilina wrote:
>
> Ah! I'll give that a try. Thanks Mike.
>
> On Monday, June 30, 2014 10:23:13 PM UTC-7, Michael Bayer wrote:
>>
>>  per the SO answer, you're looking for "CREATE INDEX ON 
>> publishers((info->>'name'));".  Either you can emit this directly as a 
>> string, or use Index, just as it states:
>>
>> from sqlalchemy import create_engine, Integer, Index, Table, Column, 
>> MetaData
>> from sqlalchemy.dialects.postgresql import JSON
>>
>> e = create_engine("postgresql://scott:tiger@localhost/test", echo=True)
>>
>> m = MetaData()
>> publishers = Table('publishers', m, Column('id', Integer), Column('info', 
>> JSON))
>> Index("foo", publishers.c.info['name'].astext)
>>
>> m.create_all(e)
>>
>> output:
>>
>> CREATE TABLE publishers (
>>     id INTEGER, 
>>     info JSON
>> )
>>
>>
>> CREATE INDEX foo ON publishers ((info ->> 'name'))
>>
>>
>>
>>
>>
>> On 7/1/14, 1:14 AM, Mike Bayer wrote:
>>  
>> I'm not familiar with any other style of index for this column type.   If 
>> you can show me at 
>> http://www.postgresql.org/docs/9.4/static/datatype-json.html or wherever 
>> what specific DDL you're looking for, you can simply emit it using 
>> engine.execute("<ddl>").
>>
>>
>> On 6/30/14, 11:02 PM, Phillip Aquilina wrote:
>>  
>> Thanks for replying. I've read through that doc and I still don't see how 
>> that addresses my question. Is there somewhere in there that describes how 
>> to create an index on a json field?  It seems like to me it's simple to 
>> create an index on a column but this would be creating an index on nested 
>> data inside the column. 
>>
>>  - Phil
>>
>> On Monday, June 30, 2014 6:07:51 PM UTC-7, Michael Bayer wrote: 
>>>
>>>  SQLAlchemy's API allows CREATE INDEX via the Index construct: 
>>> http://docs.sqlalchemy.org/en/rel_0_9/core/constraints.html?highlight=index#indexes
>>>
>>>
>>> On 6/30/14, 6:21 PM, Phillip Aquilina wrote:
>>>  
>>> Using postgresql, I have a JSON type column. My understanding from their 
>>> docs was that only jsonb columns could have an index created on them (a 
>>> feature of postgresql 9.4) but then I found an SO answer 
>>> <http://stackoverflow.com/questions/17807030/how-to-create-index-on-json-field-in-postgres-9-3>
>>>  that 
>>> said otherwise. I haven't had the chance to test it since I'm away from my 
>>> dev environment, but the sqlalchemy docs seem to support this idea 
>>> <http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html?highlight=json#sqlalchemy.dialects.postgresql.JSON>,
>>>  
>>> mentioning the availability of "Index operations." 
>>>
>>>  Unless I'm missing something obvious (very possible), it seems like 
>>> this can be done through sql, but is there a way to create an index on a 
>>> json field through the sqlalchemy api? I can't seem to find a way to do 
>>> this.
>>>
>>>  Thanks,
>>> Phil
>>>  -- 
>>> 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+...@googlegroups.com.
>>> To post to this group, send email to sqlal...@googlegroups.com.
>>> 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 sqlalchemy+...@googlegroups.com.
>> To post to this group, send email to sqlal...@googlegroups.com.
>> 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 sqlalchemy+...@googlegroups.com.
>> To post to this group, send email to sqlal...@googlegroups.com.
>> 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 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.

Reply via email to