i don't plan to move on this until I get feedback. On Tue, Feb 6, 2018 at 7:32 PM, Mike Bayer <mike...@zzzcomputing.com> wrote: > code review at https://gerrit.sqlalchemy.org/#/c/zzzeek/sqlalchemy/+/656 > and ideally would include basic ShardedQuery support > > On Tue, Feb 6, 2018 at 7:23 PM, Mike Bayer <mike...@zzzcomputing.com> wrote: >> On Tue, Feb 6, 2018 at 5:09 PM, Антонио Антуан <a.ch....@gmail.com> wrote: >>> Hello Mike! >>> First of all, thank you for your help with this problem. Me and my crew >>> appreciate it. >>> >>> >>> I have a question in case of `identity_token` for `update` and `delete` >>> methods of `Query` instances. >>> >>> If we take a look on sqlalchemy.orm.persistence.BulkDelete._do_exec, we see, >>> that there is no additonal kwargs passed to `execute` method. So I don't see >>> any way to pass additional kwargs to Session.get_bind. Here is code of 1.0 >>> version: >>> >>> def _do_exec(self): >>> delete_stmt = sql.delete(self.primary_table, >>> self.context.whereclause) >>> >>> self.result = self.query.session.execute( >>> delete_stmt, >>> params=self.query._params, >>> mapper=self.mapper, >>> # need to pass here additional kwargs >>> ) >>> self.rowcount = self.result.rowcount >>> >>> Code from master branch (almost the same): >>> >>> def _execute_stmt(self, stmt): >>> self.result = self.query.session.execute( >>> stmt, params=self.query._params, >>> mapper=self.mapper) >>> self.rowcount = self.result.rowcount >>> >>> >>> >>> >>> As you may remember, I have some kind of `CustomQuery` with `set_bind` >>> method (like the same into sqlalchemy.ext.horizontal_shard.ShardedQuery). So >>> I have `_bind_id` attribute within instances of that class. >>> My question is: Is there any way to pass `self.query._bind_id` to >>> `self.query.session.execute` (see above)? >> >> for bulk operations to work with sharding it would need to be able to >> emit the UPDATE or DELETE statement across multiple shards and work in >> a similar way to ShardedQuery._execute_and_instances, giving it the >> chance to consult with query_chooser. >> >> can you please see if you can work with this? thanks >> >> diff --git a/lib/sqlalchemy/orm/persistence.py >> b/lib/sqlalchemy/orm/persistence.py >> index dc0ae1c38..6c55dee92 100644 >> --- a/lib/sqlalchemy/orm/persistence.py >> +++ b/lib/sqlalchemy/orm/persistence.py >> @@ -1327,9 +1327,8 @@ class BulkUD(object): >> self._do_post() >> >> def _execute_stmt(self, stmt): >> - self.result = self.query.session.execute( >> - stmt, params=self.query._params, >> - mapper=self.mapper) >> + self.result = self.query._execute_crud(stmt, self.mapper) >> + >> self.rowcount = self.result.rowcount >> >> @util.dependencies("sqlalchemy.orm.query") >> diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py >> index 4f7b22cc9..91adfb79d 100644 >> --- a/lib/sqlalchemy/orm/query.py >> +++ b/lib/sqlalchemy/orm/query.py >> @@ -2901,6 +2901,12 @@ class Query(object): >> result = conn.execute(querycontext.statement, self._params) >> return loading.instances(querycontext.query, result, querycontext) >> >> + def _execute_crud(self, stmt, mapper): >> + conn = self._connection_from_session( >> + mapper=mapper, clause=stmt, close_with_result=True) >> + >> + return conn.execute(stmt, self._params) >> + >> def _get_bind_args(self, querycontext, fn, **kw): >> return fn( >> mapper=self._bind_mapper(), >> >> >> >> >> >> >>> >>> -- >>> SQLAlchemy - >>> The Python SQL Toolkit and Object Relational Mapper >>> >>> http://www.sqlalchemy.org/ >>> >>> To post example code, please provide an MCVE: Minimal, Complete, and >>> Verifiable Example. See http://stackoverflow.com/help/mcve for a full >>> description. >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to sqlalchemy+unsubscr...@googlegroups.com. >>> To post to this group, send email to sqlalchemy@googlegroups.com. >>> Visit this group at https://groups.google.com/group/sqlalchemy. >>> For more options, visit https://groups.google.com/d/optout.
-- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.