SQLAlchemy-使用索引创建表语句

SQLAlchemy-使用索引创建表语句,sqlalchemy,Sqlalchemy,我试图使用postgresql和sqalchemy生成一个createtable语句。列已正确创建,但缺少索引 我错过了什么 这是我正在使用的代码的剪报 table=表('test',元数据, 列('id',整数), 列('booking',Integer,index=True)) create_stmt=CreateTable(cls.table).编译(连接) 打印(创建\u stmt) #此打印创建表测试(id整数、预订整数) #缺少列预订的索引 您需要在表的索引上使用CreateInde

我试图使用
postgresql
sqalchemy
生成一个
createtable
语句。列已正确创建,但缺少索引

我错过了什么

这是我正在使用的代码的剪报

table=表('test',元数据,
列('id',整数),
列('booking',Integer,index=True))
create_stmt=CreateTable(cls.table).编译(连接)
打印(创建\u stmt)
#此打印创建表测试(id整数、预订整数)
#缺少列预订的索引

您需要在表的索引上使用
CreateIndex

来自sqlalchemy导入表,元数据
从sqlalchemy.schema导入CreateTable
元数据=元数据()
​
table=表('test',元数据,
列('id',整数),
列('booking',Integer,index=True))
create\u stmt=CreateTable(table).compile(session.connection())
打印(创建\u stmt)
创建表测试(
id整数,
预订整数
)
从sqlalchemy.schema导入CreateIndex
对于表1.index中的索引:
create_stmt2=CreateIndex(index).compile(session.connection())
打印(创建stmt2)
创建索引ix_测试_测试预约(预约)
老实说,这个解决方案不是很干净,也有点烦人,但我想知道您为什么不使用完整的模式创建,比如
Base.metadata.create\u all(engine)


希望能有帮助。

是的,我现在用的就是这个,但看起来不太自然。至于create_all,我知道它的存在,但在这种情况下,我不想使用它it@Irnzcig,您是否知道如何使用Oracle和
CreateSequence
?您好@MatthewMoisen,我现在没有一个可以轻松使用Oracle进行测试的设置,但是快速看一下,似乎在
sqlalchemy.schema
中有一个
CreateSequence
。我想它应该工作得差不多吧?谢谢。如果您知道advanced中哪个列包含序列,您可以执行
CreateSequence(mytable.c.id.default)