[Sqlalchemy-tickets] Issue #3279: CreateTable doesn't specify AUTO INCREMENT or indexes (zzzeek/sql
Brought to you by:
zzzeek
|
From: Shatil R. <iss...@bi...> - 2014-12-22 17:18:16
|
New issue 3279: CreateTable doesn't specify AUTO INCREMENT or indexes https://bitbucket.org/zzzeek/sqlalchemy/issue/3279/createtable-doesnt-specify-auto-increment Shatil Rafiullah: Is `CreateTable` the best way to get the SQL syntax for table creation? If I run my program altogether, I see it in the echoed SQL output, but it seems like there has to be a better way. I'm at a loss for how to get `AUTO INCREMENT` sequences to print along with table creation syntax. ``` #!python >>> table = MyModel.__table__ >>> print sqlalchemy.schema.CreateTable(table) ``` This will print something like: ``` #!sql CREATE TABLE table_name ( sequence INTEGER NOT NULL, id VARCHAR(128) NOT NULL, status VARCHAR(128) NOT NULL, status_message TEXT, PRIMARY KEY (sequence) ) ``` It doesn't close the SQL statement with a semicolon. To get indexes/indices, I must write: ``` #!python for index in table.indexes: print sqlalchemy.schema.CreateIndex(index) ``` To get: ``` #!sql CREATE INDEX ix_table_name_id ON table_name (id) CREATE INDEX ix_table_name_status ON table_name (status) ``` Now, compare the above to the echoed SQL output: ``` #!sql 2014-12-22 09:10:58,697 INFO sqlalchemy.engine.base.Engine CREATE TABLE table_name ( sequence INTEGER NOT NULL AUTO_INCREMENT, id VARCHAR(128) NOT NULL, status VARCHAR(128) NOT NULL, status_message TEXT, PRIMARY KEY (sequence), ) 2014-12-22 09:10:58,723 INFO sqlalchemy.engine.base.Engine CREATE INDEX ix_table_name_id ON table_name (id) 2014-12-22 09:10:58,744 INFO sqlalchemy.engine.base.Engine CREATE INDEX ix_table_name_status ON table_name (status) ``` |