MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / visit_delete

Method visit_delete

lib/sqlalchemy/sql/compiler.py:6734–6865  ·  view source on GitHub ↗
(self, delete_stmt, visiting_cte=None, **kw)

Source from the content-addressed store, hash-verified

6732 )
6733
6734 def visit_delete(self, delete_stmt, visiting_cte=None, **kw):
6735 compile_state = delete_stmt._compile_state_factory(
6736 delete_stmt, self, **kw
6737 )
6738 delete_stmt = compile_state.statement
6739
6740 if visiting_cte is not None:
6741 kw["visiting_cte"] = visiting_cte
6742 toplevel = False
6743 else:
6744 toplevel = not self.stack
6745
6746 if toplevel:
6747 self.isdelete = True
6748 if not self.dml_compile_state:
6749 self.dml_compile_state = compile_state
6750 if not self.compile_state:
6751 self.compile_state = compile_state
6752
6753 if self.linting & COLLECT_CARTESIAN_PRODUCTS:
6754 from_linter = FromLinter({}, set())
6755 warn_linting = self.linting & WARN_LINTING
6756 if toplevel:
6757 self.from_linter = from_linter
6758 else:
6759 from_linter = None
6760 warn_linting = False
6761
6762 extra_froms = compile_state._extra_froms
6763
6764 correlate_froms = {delete_stmt.table}.union(extra_froms)
6765 self.stack.append(
6766 {
6767 "correlate_froms": correlate_froms,
6768 "asfrom_froms": correlate_froms,
6769 "selectable": delete_stmt,
6770 }
6771 )
6772
6773 text = "DELETE "
6774
6775 if delete_stmt._prefixes:
6776 text += self._generate_prefixes(
6777 delete_stmt, delete_stmt._prefixes, **kw
6778 )
6779
6780 text += "FROM "
6781
6782 try:
6783 table_text = self.delete_table_clause(
6784 delete_stmt,
6785 delete_stmt.table,
6786 extra_froms,
6787 from_linter=from_linter,
6788 )
6789 except TypeError:
6790 # anticipate 3rd party dialects that don't include **kw
6791 # TODO: remove in 2.1

Callers

nothing calls this directly

Calls 15

_generate_prefixesMethod · 0.95
delete_table_clauseMethod · 0.95
_setup_crud_hintsMethod · 0.95
returning_clauseMethod · 0.95
_render_cte_clauseMethod · 0.95
warnMethod · 0.95
FromLinterClass · 0.85
unionMethod · 0.45

Tested by

no test coverage detected