首页 > 解决方案 > 有没有办法使用 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

以前的版本中,似乎工作

标签: sqlalchemyteradata

解决方案


关键字以方言名称开头。

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 表,它是一个普通(永久)表。


推荐阅读