I think we should add an overload to the `exec` method to still have the possibility of passing an `_Executable` statement: ``` @overload def exec( self, statement: _Executable, *, params: Optional[Union[Mapping[str, Any], Sequence[Mapping[str, Any]]]] = None, execution_options: Mapping[str, Any] = util.EMPTY_DICT, bind_arguments: Optional[Dict[str, Any]] = None, _parent_execute_state: Optional[Any] = None, _add_event: Optional[Any] = None, ) -> TupleResult[_TSelectParam]: ... ``` _Originally posted by @joachimhuet in https://github.com/tiangolo/sqlmodel/discussions/831#discussioncomment-9234181_