我正在尝试使用CREATE TABLE
和postgresql
生成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
答案 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)
。
希望它有所帮助。