Thanks for the quick response! I get it now. Sorry for my example, I realize it wasn't that clear. I think trying to explain it further would just make everyone more confused. Main takeaway is, if I want to load a table after it has already been defined, I will use the method you described (extend_existing).
On Thursday, July 20, 2017 at 3:37:36 PM UTC+2, Mike Bayer wrote: > > On Thu, Jul 20, 2017 at 5:35 AM, Fredrik Blomqvist > <fredrik.bl...@gmail.com <javascript:>> wrote: > > There seems to be surprisingly little information about how to load a > table > > manually if you set the autoload flag to False. > > There is a fairly new question on StackOverflow that has not been > answered > > properly either: https://stackoverflow.com/q/43042044/998919. > > Is there a function (e.g. ".load()") that can be called to load a table > that > > has not been loaded yet? > > hi there - > > this can be satisfied using the extend_existing flag: > > t = Table("sometable", metadata) > > Table("somedata", autoload_with=engine, extend_existing=True) > > > http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Table.params.extend_existing > > > > > > > A use-case for this is the following: > > > > You have two sets of tables: A and B. > > > > A: Depends on no-one > > B: Cannot be created with SQLAlchemy (e.g. PostgreSQL views) and depend > on > > A. > > > > If you then want to reflect B, we can call those a set of objects C. > > > > C is clearly dependent on B. However, when A is created (using e.g. > > create_all()) SQLAlchemy first loads C. If autoload is true on C, the > > program will error out. > > > > If you could instead choose to load C later, this scenario could still > work > > out. > > > > Any thoughts? > > I'm not following: > > "You have two sets of tables: A and B." OK > > "B: Cannot be created with SQLAlchemy (e.g. PostgreSQL views) and > depend on A." OK...then B is *not* a table, it is a view. I think > here we need to distinguish between SQLAlchemy in Python Table() > (which would load for B) and "CREATE TABLE" vs. "CREATE VIEW" in the > database. > > "A: "depends on no-one"", ok so lets say A is a "CREATE TABLE A" in > the database > > "When A is created (e.g. using create_all()" - OK, then there has been > no "CREATE TABLE", you just have Table, OK, there is no "A" in the > database (so why are we using reflection?) > > "SQLAlchemy first loads C" - OK I think there is some confusion here. > "create_all()" emits CREATE TABLE, it does not "load" tables (other > than checking if each immediate table exists). you call > "create_all()" when you only have Python Table objects that weren't > created in the database > > "If you then want to reflect B, we can call those a set of objects C." > - I don't understand this sentence. if B is "CREATE VIEW B AS > SELECT ....", what is C? another view that depends on B ? > > It would be much clearer if you could illustrate with code what you > are trying to do. thanks! > > > > > > > > > -- > > 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+...@googlegroups.com <javascript:>. > > To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > > 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.