MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / visit_typeclause

Method visit_typeclause

lib/sqlalchemy/dialects/mysql/base.py:1615–1661  ·  view source on GitHub ↗
(
        self,
        typeclause: elements.TypeClause,
        type_: Optional[TypeEngine[Any]] = None,
        **kw: Any,
    )

Source from the content-addressed store, hash-verified

1613 return text
1614
1615 def visit_typeclause(
1616 self,
1617 typeclause: elements.TypeClause,
1618 type_: Optional[TypeEngine[Any]] = None,
1619 **kw: Any,
1620 ) -> Optional[str]:
1621 if type_ is None:
1622 type_ = typeclause.type.dialect_impl(self.dialect)
1623 if isinstance(type_, sqltypes.TypeDecorator):
1624 return self.visit_typeclause(typeclause, type_.impl, **kw) # type: ignore[arg-type] # noqa: E501
1625 elif isinstance(type_, sqltypes.Integer):
1626 if getattr(type_, "unsigned", False):
1627 return "UNSIGNED INTEGER"
1628 else:
1629 return "SIGNED INTEGER"
1630 elif isinstance(type_, sqltypes.TIMESTAMP):
1631 return "DATETIME"
1632 elif isinstance(
1633 type_,
1634 (
1635 sqltypes.DECIMAL,
1636 sqltypes.DateTime,
1637 sqltypes.Date,
1638 sqltypes.Time,
1639 ),
1640 ):
1641 return self.dialect.type_compiler_instance.process(type_)
1642 elif isinstance(type_, sqltypes.String) and not isinstance(
1643 type_, (ENUM, SET)
1644 ):
1645 adapted = CHAR._adapt_string_for_cast(type_)
1646 return self.dialect.type_compiler_instance.process(adapted)
1647 elif isinstance(type_, sqltypes._Binary):
1648 return "BINARY"
1649 elif isinstance(type_, sqltypes.JSON):
1650 return "JSON"
1651 elif isinstance(type_, sqltypes.NUMERIC):
1652 return self.dialect.type_compiler_instance.process(type_).replace(
1653 "NUMERIC", "DECIMAL"
1654 )
1655 elif (
1656 isinstance(type_, sqltypes.Float)
1657 and self.dialect._support_float_cast
1658 ):
1659 return self.dialect.type_compiler_instance.process(type_)
1660 else:
1661 return None
1662
1663 def visit_cast(self, cast: elements.Cast[Any], **kw: Any) -> str:
1664 type_ = self.process(cast.typeclause)

Callers

nothing calls this directly

Calls 4

dialect_implMethod · 0.45
processMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected