On Wed, Jul 10, 2019, at 3:20 AM, Lele Gaifax wrote:
> Hi,
> 
> I would like to find an automated way to collect all columns of any mapped
> class which type is declared as
> 
>  ColType.as_mutable(ConcreteType)
> 
> In an application I'm developing I use sqlalchemy-media to handle multi-media
> "attachments" to avoid storing the actual media within the database. 
> 
> As an example, consider
> http://sqlalchemy-media.dobisel.com/tutorials/image.html#defining-the-model,
> where the Person class contains an "image" column defined approximately as
> 
>  class Person(Base):
>  ...
>  image = Column(Image.as_mutable(Json))
> 
> Inspecting the class, I find that the "type" of the image column is actually
> "Json", so that alone does not help. I tried different strategies, but I could
> not find a way to determine it is related to "Image".
> 
> Basically, in pseudo code, I'd like to distill an helper function like
> 
>  def find_image_columns(base_class):
>  for cls in base_class.__subclasses__():
>  m = class_mapper(cls)
>  for col in m.columns:
>  if <col is related to Image>: # this is my glass of water
>  yield cls, col
> 
> 
> I followed the as_mutable() code path, and found that it installs various
> "hooks" to achieve its goal, but could not figure out how I could "inspect"
> those to find out the link with the Image class.

yeah there is not a "nice" way to do that now without some new feature being 
added to support that. If "Image" is your own type, I would include that 
"as_mutable" sets up additional state somewhere, column.info is one place. 
sorry there is not a better solution.

> 
> As a last resort, I can easily go around all my models and put some kind of a
> marker in the "info" slot of the relevant columns, and then check for that,
> but I wonder if there is an less intrusive way... knowing and loving SA I bet
> there is and it's just a matter of pronouncing the right incantation :-)
> 
> Thank you in advance for any hint,
> ciao, lele.
> -- 
> nickname: Lele Gaifax | Quando vivrò di quello che ho pensato ieri
> real: Emanuele Gaifas | comincerò ad aver paura di chi mi copia.
> l...@metapensiero.it | -- Fortunato Depero, 1929.
> 
> -- 
> 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.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/87lfx6pd8n.fsf%40metapensiero.it.
> 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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/fe519363-4cc3-483d-a65a-dd1cc62eb635%40www.fastmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to