On Sun, Feb 3, 2019, 6:18 AM Anders Steinlein <[email protected] wrote: > Hi, > > We have a multi-tenant application where each tenant has their own schema > in PostgreSQL. Traditionally they've all been in the same database, but > we're starting to shard tenants across databases as well, and are using > Session.get_bind() to determine the bind for the current user. > > All is good so far. However, we want to selectively migrate the database > schema for users as we see fit, which can result in different columns for > the same models. > > Is there a way to dynamically set up the table for a particular > declarative model, i.e. based on the bind? The point is that we'd like all > code to still use the same and only model class, and just have conditionals > in the code where appropriate for the differences in columns. >
There's not really a way to do that because mappings create a considerable amount of permanent state against the structure of tables. I would approach these as online migrations where you use an expand / contract model, that is, new columns and tables only within "expand", then once all schemas are migrated, upgrade the code, then run "contract" to remove old tables and columns no longer needed. > > Best, > > Anders Steinlein > *Gründer og alkymistleder* > Eliksir AS – MailMojo og QuizWiz > tlf: 21 42 30 30 mob: 926 13 069 > web: e5r.no mail: [email protected] > > [image: MailMojo] > <https://mailmojo.no/?utm_source=email_signature&utm_medium=email&utm_campaign=email_signature> > > <https://www.quizwiz.no/?utm_source=email_signature&utm_medium=email&utm_campaign=email_signature> > > -- > 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 post to this group, send email to [email protected]. > 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
