【问题标题】:Is there a way to create primary index on Teradata table with SQLAlchemy?有没有办法使用 SQLAlchemy 在 Teradata 表上创建主索引?
【发布时间】:2020-07-23 15:12:12
【问题描述】:

使用 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,似乎工作

【问题讨论】:

    标签: sqlalchemy teradata


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

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2022-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      相关资源
      最近更新 更多