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

Method _copy

lib/sqlalchemy/sql/schema.py:2462–2534  ·  view source on GitHub ↗

Create a copy of this ``Column``, uninitialized. This is used in :meth:`_schema.Table.to_metadata` and by the ORM.

(self, **kw: Any)

Source from the content-addressed store, hash-verified

2460 return self._copy(**kw)
2461
2462 def _copy(self, **kw: Any) -> Column[Any]:
2463 """Create a copy of this ``Column``, uninitialized.
2464
2465 This is used in :meth:`_schema.Table.to_metadata` and by the ORM.
2466
2467 """
2468
2469 # Constraint objects plus non-constraint-bound ForeignKey objects
2470 args: List[SchemaItem] = [
2471 c._copy(**kw) for c in self.constraints if not c._type_bound
2472 ] + [c._copy(**kw) for c in self.foreign_keys if not c.constraint]
2473
2474 # ticket #5276
2475 column_kwargs = {}
2476 for dialect_name in self.dialect_options:
2477 dialect_options = self.dialect_options[dialect_name]._non_defaults
2478 for (
2479 dialect_option_key,
2480 dialect_option_value,
2481 ) in dialect_options.items():
2482 column_kwargs[dialect_name + "_" + dialect_option_key] = (
2483 dialect_option_value
2484 )
2485
2486 default = self.default
2487 if default is not None:
2488 default = default._copy()
2489 onupdate = self.onupdate
2490 if onupdate is not None:
2491 onupdate = onupdate._copy()
2492 server_default = self.server_default
2493 server_onupdate = self.server_onupdate
2494 if isinstance(server_default, (Computed, Identity)):
2495 args.append(server_default._copy(**kw))
2496 server_default = server_onupdate = None
2497 else:
2498 if server_default is not None:
2499 server_default = server_default._copy()
2500 if server_onupdate is not None:
2501 server_onupdate = server_onupdate._copy()
2502
2503 type_ = self.type
2504 if isinstance(type_, SchemaEventTarget):
2505 type_ = type_.copy(**kw)
2506
2507 c = self._constructor(
2508 name=self.name,
2509 type_=type_,
2510 key=self.key,
2511 primary_key=self.primary_key,
2512 unique=self.unique,
2513 system=self.system,
2514 # quote=self.quote, # disabled 2013-08-27 (commit 031ef080)
2515 index=self.index,
2516 autoincrement=self.autoincrement,
2517 default=default,
2518 server_default=server_default,
2519 onupdate=onupdate,

Calls 5

_schema_item_copyMethod · 0.80
itemsMethod · 0.45
appendMethod · 0.45
copyMethod · 0.45
_constructorMethod · 0.45