MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _emit_insert_statements

Function _emit_insert_statements

lib/sqlalchemy/orm/persistence.py:966–1287  ·  view source on GitHub ↗

Emit INSERT statements corresponding to value lists collected by _collect_insert_commands().

(
    base_mapper,
    uowtransaction,
    mapper,
    table,
    insert,
    *,
    bookkeeping=True,
    use_orm_insert_stmt=None,
    execution_options=None,
)

Source from the content-addressed store, hash-verified

964
965
966def _emit_insert_statements(
967 base_mapper,
968 uowtransaction,
969 mapper,
970 table,
971 insert,
972 *,
973 bookkeeping=True,
974 use_orm_insert_stmt=None,
975 execution_options=None,
976):
977 """Emit INSERT statements corresponding to value lists collected
978 by _collect_insert_commands()."""
979
980 if use_orm_insert_stmt is not None:
981 cached_stmt = use_orm_insert_stmt
982 exec_opt = util.EMPTY_DICT
983
984 # if a user query with RETURNING was passed, we definitely need
985 # to use RETURNING.
986 returning_is_required_anyway = bool(use_orm_insert_stmt._returning)
987 deterministic_results_reqd = (
988 returning_is_required_anyway
989 and use_orm_insert_stmt._sort_by_parameter_order
990 ) or bookkeeping
991 else:
992 returning_is_required_anyway = False
993 deterministic_results_reqd = bookkeeping
994 cached_stmt = base_mapper._memo(("insert", table), table.insert)
995 exec_opt = {"compiled_cache": base_mapper._compiled_cache}
996
997 if execution_options:
998 execution_options = util.EMPTY_DICT.merge_with(
999 exec_opt, execution_options
1000 )
1001 else:
1002 execution_options = exec_opt
1003
1004 return_result = None
1005
1006 for (
1007 (connection, _, hasvalue, has_all_pks, has_all_defaults),
1008 records,
1009 ) in groupby(
1010 insert,
1011 lambda rec: (
1012 rec[4], # connection
1013 set(rec[2]), # parameter keys
1014 bool(rec[5]), # whether we have "value" parameters
1015 rec[6],
1016 rec[7],
1017 ),
1018 ):
1019 statement = cached_stmt
1020
1021 if use_orm_insert_stmt is not None:
1022 statement = statement._annotate(
1023 {

Callers 1

_save_objFunction · 0.85

Calls 11

_postfetchFunction · 0.85
_postfetch_bulk_saveFunction · 0.85
return_defaultsMethod · 0.80
splice_verticallyMethod · 0.80
_memoMethod · 0.45
merge_withMethod · 0.45
_annotateMethod · 0.45
executeMethod · 0.45
getMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected