I work on ApiLogicServer <https://github.com/valhuber/ApiLogicServer#readme>, 
which creates a *models.py* file (then used to create an API and web app).

My objective is to enable users to

   1. *Customize* *models.py* (e.g, add hybrid attributes, missing 
   relationships, etc), and 
   2. *Preserve* these customizations when  the *models.py* file is later 
   recreated (e.g., the database schema was changed).

I am seeking advice.  I have looked the the following alternatives, but 
they all present issues:

   1. I'd prefer not rely on a *code merge: *let the user alter the 
*Customer.py 
   *file, then merge customizations when *Customer.py* is recreated. 
    Certainly a possibility, but it seems cleaner to keep customization files 
   separate from generated files.  
   
   2. I have looked into subclassing - e.g., generate *Customer_base*, let 
   user extend in *Customer(Customer_base)* so all their customizations are 
   in a separate file.  But, I encountered issues since the relationships are 
   bound to the super classes.  For example, anOrder.Customer returns an 
   instance of *Customer_base* instead of *Customer*
   
   3. I investigated the API *sqlalchemy.ext.hybrid.hybrid_property* to 
   create hybrid attributes.  I am familiar with hybrids via annotations, but 
   again, I want this to be in a separate file from customer.py.  I am unable 
   to find what to do with the hybrid_property descriptor (assign it to the 
   class?), which raises doubts about this approach.

A clear approach is not emerging, would appreciate some guidance.

Thanks in advance,
Val


-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/51c6a61a-fbcf-4d0c-b3e4-020f32cd11c7n%40googlegroups.com.

Reply via email to