from typing import Union
from sqlalchemy import CheckConstraint
from sqlalchemy import Constraint
from sqlalchemy import Index
from sqlalchemy import MetaData
from sqlalchemy import Table
MetaData(
naming_convention={
"ix": "ix_%(column_0_label)s",
"uq": "uq_%(table_name)s_%(column_0_name)s",
"ck": "ck_%(table_name)s_%(constraint_name)s",
"fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s",
"pk": "pk_%(table_name)s",
}
)
MetaData(naming_convention={"uq": "uq_%(table_name)s_%(column_0_N_name)s"})
def fk_guid(constraint: Union[Constraint, Index], table: Table) -> str:
return "foo"
MetaData(
naming_convention={
"fk_guid": fk_guid,
"ix": "ix_%(column_0_label)s",
"fk": "fk_%(fk_guid)s",
"foo": lambda c, t: t.name + str(c.name),
}
)
NAMING_CONVENTIONS_ONLY_CALLABLE = {
"fk_guid": fk_guid,
"foo": lambda c, t: t.name + str(c.name),
}
MetaData(naming_convention=NAMING_CONVENTIONS_ONLY_CALLABLE)
NAMING_CONVENTIONS_TYPES_FOR_KEYS_ONLY = {
CheckConstraint: "%(table_name)s_%(constraint_name)s_ck",
Index: "%(column_0_label)s_ix",
}
MetaData(naming_convention=NAMING_CONVENTIONS_TYPES_FOR_KEYS_ONLY)
NAMING_CONVENTIONS_TYPES_AND_STR_FOR_KEYS = {
CheckConstraint: "%(table_name)s_%(constraint_name)s_ck",
Index: "%(column_0_label)s_ix",
"custom": "custom",
"fk": "fk_name",
}
MetaData(naming_convention=NAMING_CONVENTIONS_TYPES_AND_STR_FOR_KEYS)
NAMING_CONVENTIONS_STR = {
"ix": "%(column_0_label)s_ix",
"uq": "%(table_name)s_%(column_0_name)s_uq",
"ck": "%(table_name)s_%(constraint_name)s_ck",
"fk": "%(table_name)s_%(column_0_name)s_%(referred_table_name)s_fk",
"pk": "%(table_name)s_pk",
}
MetaData(naming_convention=NAMING_CONVENTIONS_STR)