有没有一种方法可以使用SQLAlchemy在Teradata表上创建主索引?

时间:2020-04-10 19:44:33

标签: sqlalchemy teradata

使用SQLAlchemy创建Teradata易失表时,我似乎无法创建索引。

import teradatasqlalchemy 
import sqlalchemy as db

from teradatasqlalchemy import DATE, FLOAT
from teradatasqlalchemy.dialect import TDCreateTablePost as post
#from teradatasqlalchemy.compiler import TDCreateTablePost as post

from sqlalchemy.sql.schema import Table, Column
from sqlalchemy.schema import CreateTable

td_engine = db.create_engine('teradatasql://edwprod/?logmech=ldap&user=xxxx&password=yyyy')

metadata = db.MetaData()

temp_table = db.Table(
"temp_table",
metadata,
Column("calndr_dt", DATE),
Column("records", FLOAT),
teradata_post_create=post().primary_index(unique=True, cols=["calndr_dt"]),
extend_existing=True,
)

print(CreateTable(temp_table).compile(td_engine))

print()语句的结果,该结果似乎不包括主索引:

CREATE TABLE temp_table (
    calndr_dt DATE, 
    records FLOAT
)

包装:

SQLAlchemy 1.3.16
teradatasql 16.20.0.60
teradatasqlalchemy 16.20.0.8

previous versions中,似乎可以正常工作

1 个答案:

答案 0 :(得分:1)

关键字以方言名称开头。

temp_table = db.Table(
"temp_table",
metadata,
Column("calndr_dt", DATE),
Column("records", FLOAT),
teradatasql_post_create=post().primary_index(unique=True, cols=["calndr_dt"]),
extend_existing=True,
)

请注意,这实际上不是VOLATILE表,而是普通(永久)表。