создать перечисление sqlalchemy MetaData.create_all () в правильном пространстве имен - PullRequest
0 голосов
/ 18 января 2020

Почему MetaData.create_all () не создает тип ENUM в правильном расположении пространства имен, но схему необходимо явно передать типу перечисления sqlalchemy.Enum?

import enum
import sqlalchemy

engine = sqlalchemy.create_engine('postgresql://postgres@localhost/postgres')
connection = engine.connect()
connection.execute("CREATE SCHEMA IF NOT EXISTS myschema")

meta = sqlalchemy.MetaData(schema = 'myschema')
sqlalchemy.Enum(
    enum.Enum('e', ('these', 'are', 'enum', 'values', 'of', 'myschema')),
    # schema   = 'myschema', # why its not taking via MetaData
    metadata = meta,
)

meta.create_all(bind=engine, checkfirst=True)
connection.close()

создан в publi c пространстве имен.

postgres=# \dT+
                                      List of data types
 Schema │ Name │ Internal name │ Size │ Elements │  Owner   │ Access privileges │ Description 
────────┼──────┼───────────────┼──────┼──────────┼──────────┼───────────────────┼─────────────
 public │ e    │ e             │ 4    │ these   ↵│ postgres │                   │ 
        │      │               │      │ are     ↵│          │                   │ 
        │      │               │      │ enum    ↵│          │                   │ 
        │      │               │      │ values  ↵│          │                   │ 
        │      │               │      │ of      ↵│          │                   │ 
        │      │               │      │ myschema │          │                   │ 
(1 row)

postgres=# set search_path to myschema;
SET
Time: 0.359 ms
postgres=# \dT+
                                    List of data types
 Schema │ Name │ Internal name │ Size │ Elements │ Owner │ Access privileges │ Description 
────────┼──────┼───────────────┼──────┼──────────┼───────┼───────────────────┼─────────────
(0 rows)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...