MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / visit_column

Method visit_column

lib/sqlalchemy/sql/compiler.py:2679–2736  ·  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

2677 return self.process(sql_element, **kw)
2678
2679 def visit_column(
2680 self,
2681 column: ColumnClause[Any],
2682 add_to_result_map: Optional[_ResultMapAppender] = None,
2683 include_table: bool = True,
2684 result_map_targets: Tuple[Any, ...] = (),
2685 ambiguous_table_name_map: Optional[_AmbiguousTableNameMap] = None,
2686 **kwargs: Any,
2687 ) -> str:
2688 name = orig_name = column.name
2689 if name is None:
2690 name = self._fallback_column_name(column)
2691
2692 is_literal = column.is_literal
2693 if not is_literal and isinstance(name, elements._truncated_label):
2694 name = self._truncated_identifier("colident", name)
2695
2696 if add_to_result_map is not None:
2697 targets = (column, name, column.key) + result_map_targets
2698 if column._tq_label:
2699 targets += (column._tq_label,)
2700
2701 add_to_result_map(name, orig_name, targets, column.type)
2702
2703 if is_literal:
2704 # note we are not currently accommodating for
2705 # literal_column(quoted_name('ident', True)) here
2706 name = self.escape_literal_column(name)
2707 else:
2708 name = self.preparer.quote(name)
2709 table = column.table
2710 if table is None or not include_table or not table.named_with_column:
2711 return name
2712 else:
2713 effective_schema = self.preparer.schema_for_object(table)
2714
2715 if effective_schema:
2716 schema_prefix = (
2717 self.preparer.quote_schema(effective_schema) + "."
2718 )
2719 else:
2720 schema_prefix = ""
2721
2722 if TYPE_CHECKING:
2723 assert isinstance(table, NamedFromClause)
2724 tablename = table.name
2725
2726 if (
2727 not effective_schema
2728 and ambiguous_table_name_map
2729 and tablename in ambiguous_table_name_map
2730 ):
2731 tablename = ambiguous_table_name_map[tablename]
2732
2733 if isinstance(tablename, elements._truncated_label):
2734 tablename = self._truncated_identifier("alias", tablename)
2735
2736 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