I created a parser using pyparser that takes a filter string similar to 
what you'd pass to Query.filter(), and returns an object you can pass to 
Query.filter(). ex. "Child.last_name == 'Smith' AND Child.first_name LIKE 
'J%' OR Child.parent_id IS NULL". This was to allow storing the query 
string in the database as text and avoid using eval() or similar.

It's nowhere near complete operator-wise but it does grab the classes from 
Base, sounds similar to what you're trying to do?

https://gist.github.com/djlambert/dc909c4405df12c8a824121b2d4d713b

On Thursday, March 15, 2018 at 1:04:46 PM UTC-5, Josh wrote:
>
> Currently, SQLA lets us use constructs like `child = 
> relationship('Child')`, where 'Child' is Python code that is evaluated 
> against some global-ish namespace. (More advanced: "Child.id == Parent.id", 
> etc)
>
> Is this something that is available as a public library? We'd like to use 
> a similar pattern in our own mixin - we have a list of models that a model 
> can link to, and we'd like to be able to say `linked_models = ['ModelA', 
> 'ModelB']` and have that later be able to return the actual classes. (The 
> reason why we have this is a bit long and tedious, but it's basically a 
> hack to avoid circular imports.)
>
> In other words, is there a function that can do `model_cls = 
> looup_model(model_name)`?
>
> Thanks,
> Josh
>

-- 
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