How might I convince SQLAlchemy 0.7.9 to create a newly added index on a table 
in the event that the index doesn't already exist? This new index is created as 
a member of __table_args__; it is not instantiated with index=True. I have many 
such index objects to create.

Calling create_all() doesn't appear to issue CREATEs for a table if it already 
exists. I think that's because the optional checkfirst parameter defaults to 
True.

Setting checkfirst=False breaks because trying to create an already existing DB 
object is an error, and most of my DB already exists:

    ModelBase.metadata.create_all(checkfirst=False)
    ProgrammingError: (ProgrammingError) relation "organism" already exists
    '\nCREATE TABLE organism (\n\tid SERIAL NOT NULL, \n\tname VARCHAR NOT 
NULL, \n\tPRIMARY KEY (id)\n)\n\n' {}


I did check stackoverflow, and their unsatisfactory advice was simply to cut 
and paste the generated DDL:

    
http://stackoverflow.com/questions/14419299/adding-indexes-to-sqlalchemy-models-after-table-creation


In a perfect world, I'd like a way to drop a new index onto a column with the 
assurance that SQLAlchemy will create it as needed. In my case, this DB is just 
a big testing data set, so there is no need for formal migrations.

If this feature doesn't exist, I would settle for a function that would take a 
table and conditionally create any missing pieces (specifically indexes).

As a last resort, is the correct way to do this simply to call Index.create for 
each index I make?

MB

-- 
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?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to