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
| 1033 | |
| 1034 | |
| 1035 | class ClauseAdapter(visitors.ReplacingExternalTraversal): |
| 1036 | """Clones and modifies clauses based on column correspondence. |
| 1037 | |
| 1038 | E.g.:: |
| 1039 | |
| 1040 | table1 = Table( |
| 1041 | "sometable", |
| 1042 | metadata, |
| 1043 | Column("col1", Integer), |
| 1044 | Column("col2", Integer), |
| 1045 | ) |
| 1046 | table2 = Table( |
| 1047 | "someothertable", |
| 1048 | metadata, |
| 1049 | Column("col1", Integer), |
| 1050 | Column("col2", Integer), |
| 1051 | ) |
| 1052 | |
| 1053 | condition = table1.c.col1 == table2.c.col1 |
| 1054 | |
| 1055 | make an alias of table1:: |
| 1056 | |
| 1057 | s = table1.alias("foo") |
| 1058 | |
| 1059 | calling ``ClauseAdapter(s).traverse(condition)`` converts |
| 1060 | condition to read:: |
| 1061 | |
| 1062 | s.c.col1 == table2.c.col1 |
| 1063 | |
| 1064 | """ |
| 1065 | |
| 1066 | __slots__ = ( |
| 1067 | "__traverse_options__", |
| 1068 | "selectable", |
| 1069 | "include_fn", |
| 1070 | "exclude_fn", |
| 1071 | "equivalents", |
| 1072 | "adapt_on_names", |
| 1073 | "adapt_from_selectables", |
| 1074 | ) |
| 1075 | |
| 1076 | def __init__( |
| 1077 | self, |
| 1078 | selectable: Selectable, |
| 1079 | equivalents: Optional[_EquivalentColumnMap] = None, |
| 1080 | include_fn: Optional[Callable[[ClauseElement], bool]] = None, |
| 1081 | exclude_fn: Optional[Callable[[ClauseElement], bool]] = None, |
| 1082 | adapt_on_names: bool = False, |
| 1083 | anonymize_labels: bool = False, |
| 1084 | adapt_from_selectables: Optional[AbstractSet[FromClause]] = None, |
| 1085 | ): |
| 1086 | self.__traverse_options__ = { |
| 1087 | "stop_on": [selectable], |
| 1088 | "anonymize_labels": anonymize_labels, |
| 1089 | } |
| 1090 | self.selectable = selectable |
| 1091 | self.include_fn = include_fn |
| 1092 | self.exclude_fn = exclude_fn |
no outgoing calls