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

Method _reflect_fk

lib/sqlalchemy/engine/reflection.py:1729–1816  ·  view source on GitHub ↗
(
        self,
        _reflect_info: _ReflectionInfo,
        table_key: TableKey,
        table: sa_schema.Table,
        cols_by_orig_name: Dict[str, sa_schema.Column[Any]],
        include_columns: Optional[Collection[str]],
        exclude_columns: Collection[str],
        resolve_fks: bool,
        _extend_on: Optional[Set[sa_schema.Table]],
        reflection_options: Dict[str, Any],
    )

Source from the content-addressed store, hash-verified

1727 table.primary_key._reload(pk_cols)
1728
1729 def _reflect_fk(
1730 self,
1731 _reflect_info: _ReflectionInfo,
1732 table_key: TableKey,
1733 table: sa_schema.Table,
1734 cols_by_orig_name: Dict[str, sa_schema.Column[Any]],
1735 include_columns: Optional[Collection[str]],
1736 exclude_columns: Collection[str],
1737 resolve_fks: bool,
1738 _extend_on: Optional[Set[sa_schema.Table]],
1739 reflection_options: Dict[str, Any],
1740 ) -> None:
1741 fkeys = _reflect_info.foreign_keys.get(table_key, [])
1742 for fkey_d in fkeys:
1743 conname = fkey_d["name"]
1744 # look for columns by orig name in cols_by_orig_name,
1745 # but support columns that are in-Python only as fallback
1746 constrained_columns = [
1747 cols_by_orig_name[c].key if c in cols_by_orig_name else c
1748 for c in fkey_d["constrained_columns"]
1749 ]
1750
1751 if (
1752 exclude_columns
1753 and set(constrained_columns).intersection(exclude_columns)
1754 or (
1755 include_columns
1756 and set(constrained_columns).difference(include_columns)
1757 )
1758 ):
1759 continue
1760
1761 referred_schema = fkey_d["referred_schema"]
1762 referred_table = fkey_d["referred_table"]
1763 referred_columns = fkey_d["referred_columns"]
1764 refspec = []
1765 if referred_schema is not None:
1766 if resolve_fks:
1767 sa_schema.Table(
1768 referred_table,
1769 table.metadata,
1770 schema=referred_schema,
1771 autoload_with=self.bind,
1772 _extend_on=_extend_on,
1773 _reflect_info=_reflect_info,
1774 **reflection_options,
1775 )
1776 for column in referred_columns:
1777 refspec.append(
1778 ".".join([referred_schema, referred_table, column])
1779 )
1780 else:
1781 if resolve_fks:
1782 sa_schema.Table(
1783 referred_table,
1784 table.metadata,
1785 autoload_with=self.bind,
1786 schema=sa_schema.BLANK_SCHEMA,

Callers 1

reflect_tableMethod · 0.95

Calls 7

append_constraintMethod · 0.80
getMethod · 0.45
intersectionMethod · 0.45
differenceMethod · 0.45
appendMethod · 0.45
joinMethod · 0.45
warnMethod · 0.45

Tested by

no test coverage detected