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

Method visit_column

lib/sqlalchemy/sql/compiler.py:2612–2669  ·  view source on GitHub ↗
(
        self,
        column: ColumnClause[Any],
        add_to_result_map: Optional[_ResultMapAppender] = None,
        include_table: bool = True,
        result_map_targets: Tuple[Any, ...] = (),
        ambiguous_table_name_map: Optional[_AmbiguousTableNameMap] = None,
        **kwargs: Any,
    )

Source from the content-addressed store, hash-verified

2610 return self.process(sql_element, **kw)
2611
2612 def visit_column(
2613 self,
2614 column: ColumnClause[Any],
2615 add_to_result_map: Optional[_ResultMapAppender] = None,
2616 include_table: bool = True,
2617 result_map_targets: Tuple[Any, ...] = (),
2618 ambiguous_table_name_map: Optional[_AmbiguousTableNameMap] = None,
2619 **kwargs: Any,
2620 ) -> str:
2621 name = orig_name = column.name
2622 if name is None:
2623 name = self._fallback_column_name(column)
2624
2625 is_literal = column.is_literal
2626 if not is_literal and isinstance(name, elements._truncated_label):
2627 name = self._truncated_identifier("colident", name)
2628
2629 if add_to_result_map is not None:
2630 targets = (column, name, column.key) + result_map_targets
2631 if column._tq_label:
2632 targets += (column._tq_label,)
2633
2634 add_to_result_map(name, orig_name, targets, column.type)
2635
2636 if is_literal:
2637 # note we are not currently accommodating for
2638 # literal_column(quoted_name('ident', True)) here
2639 name = self.escape_literal_column(name)
2640 else:
2641 name = self.preparer.quote(name)
2642 table = column.table
2643 if table is None or not include_table or not table.named_with_column:
2644 return name
2645 else:
2646 effective_schema = self.preparer.schema_for_object(table)
2647
2648 if effective_schema:
2649 schema_prefix = (
2650 self.preparer.quote_schema(effective_schema) + "."
2651 )
2652 else:
2653 schema_prefix = ""
2654
2655 if TYPE_CHECKING:
2656 assert isinstance(table, NamedFromClause)
2657 tablename = table.name
2658
2659 if (
2660 not effective_schema
2661 and ambiguous_table_name_map
2662 and tablename in ambiguous_table_name_map
2663 ):
2664 tablename = ambiguous_table_name_map[tablename]
2665
2666 if isinstance(tablename, elements._truncated_label):
2667 tablename = self._truncated_identifier("alias", tablename)
2668
2669 return schema_prefix + self.preparer.quote(tablename) + "." + name

Callers 4

compile_colMethod · 0.45
goofyMethod · 0.45

Calls 6

_fallback_column_nameMethod · 0.95
_truncated_identifierMethod · 0.95
escape_literal_columnMethod · 0.95
quoteMethod · 0.45
schema_for_objectMethod · 0.45
quote_schemaMethod · 0.45

Tested by 2

compile_colMethod · 0.36
goofyMethod · 0.36