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.

Reply via email to