Hi Mike, Many thanks for your reply, giving a try to it as soon as it will be released.
Le mercredi 23 décembre 2020 à 16:46:53 UTC+1, Mike Bayer a écrit : > In a little while the git master will have new accessors: > > ORMExecuteState.bind_mapper > ORMExecuteState.all_mappers > > so that you can reliably get at the Mapper objects that are the target of > an ORM-enabled select(), update() , or delete() > > see https://gerrit.sqlalchemy.org/c/sqlalchemy/sqlalchemy/+/2432 for the > patch going through testing now. > > > > On Wed, Dec 23, 2020, at 10:16 AM, Mike Bayer wrote: > > First off I admire your motivation to make that happen, that's all new > stuff and note there's a lot of fixes to the with_loader_criteria() thing > that are sitting in github master right now that will be in 1.4.0b2. > > The good news is that update() and delete() both support options as well > so feel free to use with_loader_criteria() with these constructs as well, > using the 2.0-style execution described at > https://docs.sqlalchemy.org/en/14/orm/session_basics.html#update-and-delete-with-arbitrary-where-clause > > . > > it might be nice for us to add a universal "mappers" accessor to > ORMExecuteState but for the moment you can likely work for all statements > generically as: > > if orm_execute_state.is_orm_statement: > mapper = orm_execute_state.bind_arguments['mapper'] > cls = mapper.class_ > > see if that works out and we will likely need to add an accessor that > guarantees being able to provide the target "mapper" and/or mappers for any > operation. > > > > > > On Wed, Dec 23, 2020, at 4:54 AM, Frédéric CLEMENT wrote: > > Hi the list, > > > Version 1.4Beta (hopefully 2.0 very soon) > > I am writing a multitenant application and I need to filter all requests > using subqueries. > I succeeded to do it for selects doing something like that : > > > > > > > > > > > > > > > *for desc in orm_execute_state.statement.column_descriptions: t = > desc['type'] classname = desc['name'] scope = get_scope(classname) if scope > != None: rights = check_rights(session, infos, role, scope) > orm_execute_state.statement = orm_execute_state.statement.options( > with_loader_criteria( t, t.id.in_(rights), include_aliases=True ) )* > > But I didn't find out how to do it for updates and deletes. > If some of yours have an idea .... :) > > Thanks a lot, > > Fred > > > > -- > 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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy/69ab301d-e223-4b5d-9e37-756ce5b04801n%40googlegroups.com > > <https://groups.google.com/d/msgid/sqlalchemy/69ab301d-e223-4b5d-9e37-756ce5b04801n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > > > -- > 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 [email protected]. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/sqlalchemy/7c47c079-bca5-44de-aea2-40d8eb708c7b%40www.fastmail.com > > <https://groups.google.com/d/msgid/sqlalchemy/7c47c079-bca5-44de-aea2-40d8eb708c7b%40www.fastmail.com?utm_medium=email&utm_source=footer> > . > > > -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/ed8949f0-e119-433e-9a92-70d0d71a4e5en%40googlegroups.com.
