MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / __getitem__

Method __getitem__

lib/sqlalchemy/sql/naming.py:97–127  ·  view source on GitHub ↗
(self, key)

Source from the content-addressed store, hash-verified

95 return fk.column.name
96
97 def __getitem__(self, key):
98 if key in self.convention:
99 return self.convention[key](self.const, self.table)
100 elif hasattr(self, "_key_%s" % key):
101 return getattr(self, "_key_%s" % key)()
102 else:
103 col_template = re.match(r".*_?column_(\d+)(_?N)?_.+", key)
104 if col_template:
105 idx = col_template.group(1)
106 multiples = col_template.group(2)
107
108 if multiples:
109 if self._is_fk:
110 elems = self.const.elements
111 else:
112 elems = list(self.const.columns)
113 tokens = []
114 for idx, elem in enumerate(elems):
115 attr = "_key_" + key.replace("0" + multiples, "X")
116 try:
117 tokens.append(getattr(self, attr)(idx))
118 except AttributeError:
119 raise KeyError(key)
120 sep = "_" if multiples.startswith("_") else ""
121 return sep.join(tokens)
122 else:
123 attr = "_key_" + key.replace(idx, "X")
124 idx = int(idx)
125 if hasattr(self, attr):
126 return getattr(self, attr)(idx)
127 raise KeyError(key)
128
129
130_prefix_dict = {

Callers

nothing calls this directly

Calls 5

matchMethod · 0.45
replaceMethod · 0.45
appendMethod · 0.45
startswithMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected