Есть ли способ создать первичный индекс для таблицы Teradata с помощью SQLAlchemy? - PullRequest
0 голосов
/ 10 апреля 2020

Я не могу создать индекс при создании таблицы Teradata volatile с SQLAlchemy.

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
teradata sql 16.20.0.60
teradatasqlalchemy 16.20.0.8

В предыдущих версиях , похоже, работает

1 Ответ

1 голос
/ 11 апреля 2020

Ключевое слово начинается с названия диалекта.

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, это обычная (постоянная) таблица.

...