MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / ClauseAdapter

Class ClauseAdapter

lib/sqlalchemy/sql/util.py:1047–1224  ·  view source on GitHub ↗

Clones and modifies clauses based on column correspondence. E.g.:: table1 = Table( "sometable", metadata, Column("col1", Integer), Column("col2", Integer), ) table2 = Table( "someothertable", metadata, Colu

Source from the content-addressed store, hash-verified

1045
1046
1047class ClauseAdapter(visitors.ReplacingExternalTraversal):
1048 """Clones and modifies clauses based on column correspondence.
1049
1050 E.g.::
1051
1052 table1 = Table(
1053 "sometable",
1054 metadata,
1055 Column("col1", Integer),
1056 Column("col2", Integer),
1057 )
1058 table2 = Table(
1059 "someothertable",
1060 metadata,
1061 Column("col1", Integer),
1062 Column("col2", Integer),
1063 )
1064
1065 condition = table1.c.col1 == table2.c.col1
1066
1067 make an alias of table1::
1068
1069 s = table1.alias("foo")
1070
1071 calling ``ClauseAdapter(s).traverse(condition)`` converts
1072 condition to read::
1073
1074 s.c.col1 == table2.c.col1
1075
1076 """
1077
1078 __slots__ = (
1079 "__traverse_options__",
1080 "selectable",
1081 "include_fn",
1082 "exclude_fn",
1083 "equivalents",
1084 "adapt_on_names",
1085 "adapt_from_selectables",
1086 )
1087
1088 def __init__(
1089 self,
1090 selectable: Selectable,
1091 equivalents: Optional[_EquivalentColumnMap] = None,
1092 include_fn: Optional[Callable[[ClauseElement], bool]] = None,
1093 exclude_fn: Optional[Callable[[ClauseElement], bool]] = None,
1094 adapt_on_names: bool = False,
1095 anonymize_labels: bool = False,
1096 adapt_from_selectables: Optional[AbstractSet[FromClause]] = None,
1097 ):
1098 self.__traverse_options__ = {
1099 "stop_on": [selectable],
1100 "anonymize_labels": anonymize_labels,
1101 }
1102 self.selectable = selectable
1103 self.include_fn = include_fn
1104 self.exclude_fn = exclude_fn

Callers 4

splice_joinsFunction · 0.85
_optimized_compareMethod · 0.85
join_targetsMethod · 0.85

Calls

no outgoing calls

Tested by 1