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,
)
| 964 | |
| 965 | |
| 966 | def _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 | { |
no test coverage detected