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

Function _emit_insert_statements

lib/sqlalchemy/orm/persistence.py:963–1284  ·  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

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

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