On Tue, Mar 12, 2019 at 2:05 AM Tolstov Sergey <whistler...@gmail.com> wrote: > > Addition. > If i create all possible classes i may get a low perfomance (rel to root > class)
I understand the startup time issue, although again if your application runs long enough, all that time will ultimately have been taken. Once you do have all the classes loaded, I'm not sure how that affects performance going forward unless your server is running out of memory as a result. There should be no impact on performance if your application has 3 or 300 classes and mappers loaded in memory provided you have enough memory and provided these classes aren't spinning off some kind of background work by existing. Anyway, this is risky, because if you have a multithreaded / multi-green-thread application running lots of queries, and all of them are digging into your registry, creating classes and new mapper() objects on the fly, how are you guarding against two queries trying to access the same mapper() at the same time and both trying to create it? Are you mutexing around the whole get() operation or otherwise gating the production of the new class + mapper() (hurts performance also)? Additionally, a mapper needs to have the configure step called, which uses a mutex so should be threadsafe. Beyond that, this doesn't work from a mapping perspective, because the root mapper needs to know about the attributes on the subclass in order to load correctly. I can give you a POC that works only if you use single table inheritance and the subclasses have no columns on them, which is quite limited, see below. Otherwise, the loading system does not have the information it needs if new classes are added on the fly in the middle of the loading process. Bigger issue is that if you've built a datamodel that takes too long to start up because it has many hundreds of classes that usually arent needed, this may be a sign of a bigger architectural problem. If OTOH these polymorphic classes are generated anonymously, e.g. they really aren't business objects but just data containers, then that's not really how the polymorphic inheritance feature was meant to be used. > > -- > 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.