class documentation

class ENUM(NamedType, sqltypes.NativeForEmulated, sqltypes.Enum): (source)

View In Hierarchy

PostgreSQL ENUM type. This is a subclass of :class:`_types.Enum` which includes support for PG's ``CREATE TYPE`` and ``DROP TYPE``. When the builtin type :class:`_types.Enum` is used and the :paramref:`.Enum.native_enum` flag is left at its default of True, the PostgreSQL backend will use a :class:`_postgresql.ENUM` type as the implementation, so the special create/drop rules will be used. The create/drop behavior of ENUM is necessarily intricate, due to the awkward relationship the ENUM type has in relationship to the parent table, in that it may be "owned" by just a single table, or may be shared among many tables. When using :class:`_types.Enum` or :class:`_postgresql.ENUM` in an "inline" fashion, the ``CREATE TYPE`` and ``DROP TYPE`` is emitted corresponding to when the :meth:`_schema.Table.create` and :meth:`_schema.Table.drop` methods are called:: table = Table('sometable', metadata, Column('some_enum', ENUM('a', 'b', 'c', name='myenum')) ) table.create(engine) # will emit CREATE ENUM and CREATE TABLE table.drop(engine) # will emit DROP TABLE and DROP ENUM To use a common enumerated type between multiple tables, the best practice is to declare the :class:`_types.Enum` or :class:`_postgresql.ENUM` independently, and associate it with the :class:`_schema.MetaData` object itself:: my_enum = ENUM('a', 'b', 'c', name='myenum', metadata=metadata) t1 = Table('sometable_one', metadata, Column('some_enum', myenum) ) t2 = Table('sometable_two', metadata, Column('some_enum', myenum) ) When this pattern is used, care must still be taken at the level of individual table creates. Emitting CREATE TABLE without also specifying ``checkfirst=True`` will still cause issues:: t1.create(engine) # will fail: no such type 'myenum' If we specify ``checkfirst=True``, the individual table-level create operation will check for the ``ENUM`` and create if not exists:: # will check if enum exists, and emit CREATE TYPE if not t1.create(engine, checkfirst=True) When using a metadata-level ENUM type, the type will always be created and dropped if either the metadata-wide create/drop is called:: metadata.create_all(engine) # will emit CREATE TYPE metadata.drop_all(engine) # will emit DROP TYPE The type can also be created and dropped directly:: my_enum.create(engine) my_enum.drop(engine) .. versionchanged:: 1.0.0 The PostgreSQL :class:`_postgresql.ENUM` type now behaves more strictly with regards to CREATE/DROP. A metadata-level ENUM type will only be created and dropped at the metadata level, not the table level, with the exception of ``table.create(checkfirst=True)``. The ``table.drop()`` call will now emit a DROP TYPE for a table-level enumerated type.

Class Method __test_init__ Undocumented
Class Method adapt_emulated_to_native Produce a PostgreSQL native :class:`_postgresql.ENUM` from plain :class:`.Enum`.
Method __init__ Construct an :class:`_postgresql.ENUM`.
Method create Emit ``CREATE TYPE`` for this :class:`_postgresql.ENUM`.
Method drop Emit ``DROP TYPE`` for this :class:`_postgresql.ENUM`.
Method get_dbapi_type dont return dbapi.STRING for ENUM in PostgreSQL, since that's a different type
Class Variable native_enum Undocumented
Instance Variable create_type Undocumented

Inherited from NamedType:

Class Variable __abstract__ Undocumented
Class Variable DDLDropper Undocumented
Class Variable DDLGenerator Undocumented
Method _check_for_name_in_memos Look in the 'ddl runner' for 'memos', then note our name in that collection.
Method _on_metadata_create Undocumented
Method _on_metadata_drop Undocumented
Method _on_table_create Undocumented
Method _on_table_drop Undocumented

Inherited from NativeForEmulated (via NamedType):

Class Method adapt_native_to_emulated Given an impl, adapt this type's class to the impl assuming "emulated".

Inherited from Enum (via NamedType, NativeForEmulated):

Class Comparator Undocumented
Method __repr__ Undocumented
Method adapt Produce an "adapted" form of this type, given an "impl" class to work with.
Method adapt_to_emulated Given an impl class, adapt this type to the impl assuming "emulated".
Method as_generic Return an instance of the generic type corresponding to this type using heuristic rule. The method may be overridden if this heuristic rule is not sufficient.
Method bind_processor Return a conversion function for processing bind values.
Method copy Undocumented
Method literal_processor Return a conversion function for processing literal values that are to be rendered directly without using binds.
Method result_processor Return a conversion function for processing result row values.
Class Variable __visit_name__ Undocumented
Instance Variable create_constraint Undocumented
Instance Variable enum_class Undocumented
Instance Variable enums Undocumented
Instance Variable validate_strings Undocumented
Instance Variable values_callable Undocumented
Property native Undocumented
Property python_type Return the Python type object expected to be returned by instances of this type, if known.
Property sort_key_function A sorting function that can be passed as the key to sorted.
Method _db_value_for_elem Undocumented
Method _enum_init internal init for :class:`.Enum` and subclasses.
Method _make_enum_kw Undocumented
Method _object_value_for_elem Undocumented
Method _parse_into_values Undocumented
Method _resolve_for_literal adjust this type given a literal Python value that will be stored in a bound parameter.
Method _resolve_for_python_type given a Python type (e.g. ``int``, ``str``, etc. ) return an instance of this :class:`.TypeEngine` that's appropriate for this type.
Method _set_table Undocumented
Method _setup_for_values Undocumented
Method _should_create_constraint Undocumented
Instance Variable _default_length Undocumented
Instance Variable _object_lookup Undocumented
Instance Variable _omit_aliases Undocumented
Instance Variable _sort_key_function Undocumented
Instance Variable _valid_lookup Undocumented
Property _enums_argument Undocumented

Inherited from String (via NamedType, NativeForEmulated, Enum):

Instance Variable collation Undocumented
Instance Variable length Undocumented

Inherited from SchemaType (via NamedType, NativeForEmulated, Enum, String, Concatenable):

Instance Variable dispatch Undocumented
Instance Variable inherit_schema Undocumented
Instance Variable metadata Undocumented
Instance Variable name Undocumented
Instance Variable schema Undocumented
Method _is_impl_for_variant Undocumented
Method _set_parent Associate with this SchemaEvent's parent object.
Method _variant_mapping_for_set_table Undocumented
Class Variable _use_schema_map Undocumented
Instance Variable _create_events Undocumented

Inherited from SchemaEventTarget (via NamedType, NativeForEmulated, Enum, String, Concatenable, SchemaType):

Method _set_parent_with_dispatch Undocumented

Inherited from EventTarget (via NamedType, NativeForEmulated, Enum, String, Concatenable, SchemaType, SchemaEventTarget):

Class Variable __slots__ Undocumented

Inherited from TypeEngineMixin (via NamedType, NativeForEmulated, Enum, String, Concatenable, SchemaType, SchemaEventTarget, EventTarget, Emulated):

Method dialect_impl Undocumented
Property _static_cache_key Undocumented

Inherited from TypeEngine (via NamedType, NativeForEmulated, Enum, String, Concatenable, SchemaType, SchemaEventTarget, EventTarget, Emulated, TypeEngineMixin):

Method __str__ Undocumented
Method bind_expression Given a bind value (i.e. a :class:`.BindParameter` instance), return a SQL expression in its place.
Method coerce_compared_value Suggest a type for a 'coerced' Python value in an expression.
Method column_expression Given a SELECT column expression, return a wrapping SQL expression.
Method compare_against_backend Compare this type against the given backend type.
Method compare_values Compare two values for equality.
Method compile Produce a string-compiled form of this :class:`.TypeEngine`.
Method copy_value Undocumented
Method evaluates_none Return a copy of this type which has the :attr:`.should_evaluate_none` flag set to True.
Method with_variant Produce a copy of this type object that will utilize the given type when applied to the dialect of the given name.
Class Variable hashable Flag, if False, means values from this type aren't hashable.
Class Variable render_bind_cast Render bind casts for :attr:`.BindTyping.RENDER_CASTS` mode.
Class Variable render_literal_cast render casts when rendering a value as an inline literal, e.g. with :meth:`.TypeEngine.literal_processor`.
Class Variable should_evaluate_none If True, the Python constant ``None`` is considered to be handled explicitly by this type.
Static Method _to_instance Undocumented
Method _cached_bind_processor Return a dialect-specific bind processor for this type.
Method _cached_custom_processor return a dialect-specific processing object for custom purposes.
Method _cached_literal_processor Return a dialect-specific literal processor for this type.
Method _cached_result_processor Return a dialect-specific result processor for this type.
Method _compare_type_affinity Undocumented
Method _default_dialect Undocumented
Method _dialect_info Return a dialect-specific registry which caches a dialect-specific implementation, bind processing function, and one or more result processing functions.
Method _gen_dialect_impl Undocumented
Method _unwrapped_dialect_impl Return the 'unwrapped' dialect impl for this type.
Class Variable _is_array Undocumented
Class Variable _is_table_value Undocumented
Class Variable _is_tuple_type Undocumented
Class Variable _is_type_decorator Undocumented
Class Variable _isnull Undocumented
Class Variable _sqla_type Undocumented
Property _generic_type_affinity Undocumented
Property _has_bind_expression memoized boolean, check if bind_expression is implemented.
Property _has_column_expression memoized boolean, check if column_expression is implemented.
Property _type_affinity Return a rudimental 'affinity' value expressing the general class of type.

Inherited from Visitable (via NamedType, NativeForEmulated, Enum, String, Concatenable, SchemaType, SchemaEventTarget, EventTarget, Emulated, TypeEngineMixin, TypeEngine):

Method __class_getitem__ Undocumented
Method __init_subclass__ Undocumented
Class Method _generate_compiler_dispatch Undocumented
Method _compiler_dispatch Undocumented
Class Variable _original_compiler_dispatch Undocumented
@classmethod
def __test_init__(cls): (source)

Undocumented

@classmethod
def adapt_emulated_to_native(cls, impl, **kw): (source)

Produce a PostgreSQL native :class:`_postgresql.ENUM` from plain :class:`.Enum`.

def __init__(self, *enums, name: str, create_type: bool = True, **kw): (source)

Construct an :class:`_postgresql.ENUM`. Arguments are the same as that of :class:`_types.Enum`, but also including the following parameters. :param create_type: Defaults to True. Indicates that ``CREATE TYPE`` should be emitted, after optionally checking for the presence of the type, when the parent table is being created; and additionally that ``DROP TYPE`` is called when the table is dropped. When ``False``, no check will be performed and no ``CREATE TYPE`` or ``DROP TYPE`` is emitted, unless :meth:`~.postgresql.ENUM.create` or :meth:`~.postgresql.ENUM.drop` are called directly. Setting to ``False`` is helpful when invoking a creation scheme to a SQL file without access to the actual database - the :meth:`~.postgresql.ENUM.create` and :meth:`~.postgresql.ENUM.drop` methods can be used to emit SQL to a target bind.

def create(self, bind=None, checkfirst=True): (source)

Emit ``CREATE TYPE`` for this :class:`_postgresql.ENUM`. If the underlying dialect does not support PostgreSQL CREATE TYPE, no action is taken. :param bind: a connectable :class:`_engine.Engine`, :class:`_engine.Connection`, or similar object to emit SQL. :param checkfirst: if ``True``, a query against the PG catalog will be first performed to see if the type does not exist already before creating.

def drop(self, bind=None, checkfirst=True): (source)

Emit ``DROP TYPE`` for this :class:`_postgresql.ENUM`. If the underlying dialect does not support PostgreSQL DROP TYPE, no action is taken. :param bind: a connectable :class:`_engine.Engine`, :class:`_engine.Connection`, or similar object to emit SQL. :param checkfirst: if ``True``, a query against the PG catalog will be first performed to see if the type actually exists before dropping.

def get_dbapi_type(self, dbapi): (source)

dont return dbapi.STRING for ENUM in PostgreSQL, since that's a different type