SQLAlchemy - 使用索引创建表语句

时间:2015-10-19 08:44:46

标签: sqlalchemy

我正在尝试使用CREATE TABLEpostgresql生成sqalchemy语句。正确创建列但缺少索引。

我缺少什么?

这是我正在使用的代码片段......

table = Table('test', metadata, 
              Column('id', Integer), 
              Column('booking', Integer, index=True))
create_stmt = CreateTable(cls.table).compile(connection)
print create_stmt
# This print CREATE TABLE test ( id INTEGER, booking INTEGER)
# Index on column booking is missing

1 个答案:

答案 0 :(得分:3)

您需要对表的索引使用CreateIndex

In [5]:

from sqlalchemy import Table, MetaData
from sqlalchemy.schema import CreateTable

metadata=MetaData()
​
table = Table('test', metadata, 
              Column('id', Integer), 
              Column('booking', Integer, index=True))

In [7]:

create_stmt = CreateTable(table).compile(session.connection())
print(create_stmt)

CREATE TABLE test (
    id INTEGER, 
    booking INTEGER
)

In [14]:

from sqlalchemy.schema import CreateIndex
for index in table.indexes:
    create_stmt2 = CreateIndex(index).compile(session.connection())
    print(create_stmt2)

CREATE INDEX ix_test_booking ON test (booking)

这个解决方案不是那么干净,有点烦人,老实说,但我想知道你是否有任何理由不使用完整的模式创建,如Base.metadata.create_all(engine)

希望它有所帮助。