Thanks, i am trying to follow your answer but i want to respond to your 
question. 
i have one main schema ( like a public one ) whith general tables and in 
others schemas are almost identicals, there is , sometimes a difference in 
the number of tables ( some big module is active ) but tables are always 
identical.

I have changed some Classes but i have this error.
InvalidRequestError: SQL expression, column, or mapped entity expected - 
got '<class 'promogest.dao.User.User'>'

my first thought was to map two schema at the time ( the main one and the 
company one ) but like i wrote before the query give me always the old 
Class.

thanks

 

Il giorno lunedì 19 gennaio 2015 17:15:45 UTC+1, Michael Bayer ha scritto:
>
>
>
> M3nt0r3 <m3n...@gmail.com <javascript:>> wrote: 
>
> > 
> > 
> > Here, in the log i change the search_path to veterfarma that is the news 
> scheme but the query is performed to ferchim. that is the first schema i 
> choose on the app start. 
> > 
> > i have 
> > 
> >     __table__ = Table('foo', metadata,  schema=schema,  autoload=True ) 
>
>
> 1. do not use bound metadata.       I don’t recommend the use of bound 
> metadata for any situation, and it is only in the docs in one place with a 
> prominent warning that one should probably not use it. 
>
>
> 2. do not place the “schema” directive into the Table.  the schema for the 
> Table will be None. 
>
>
> > 
> > in every Class Foo(Base) 
> > 
> > if i don't use schema in the definition i have a 
> > 
> > 2015-01-19 16:48:20,698 INFO sqlalchemy.engine.base.Engine 
> {'table_name': u'foo'} 
> > Traceback (most recent call last): 
> > [...] 
> >    File 
> "/usr/lib64/python2.7/site-packages/sqlalchemy/engine/reflection.py", line 
> 54, in cache 
> >     ret = fn(self, con, *args, **kw) 
> >   File 
> "/usr/lib64/python2.7/site-packages/sqlalchemy/dialects/postgresql/base.py", 
> line 1933, in get_table_oid 
> >     raise exc.NoSuchTableError(table_name) 
> > NoSuchTableError: foo 
>
> 3. do not use any engine directly for any purpose other than to procure a 
> Connection object.  do not pass it to a Table for autoload, especially.   
>  When we get a Connection object, we always have to set a new search path 
> on it. 
>
> 4. it’s awkward that you have many schemas each with the same schema 
> repeated, yet you want to use reflection - which schema do you wish to 
> reflect?   are all the schemas exactly the same ?  if not, you’d need to 
> map to each schema individually.   Here, we will assume that *all schemas 
> are completely identical*, that we can reflect just one of them and those 
> tables will match all the other schemas. 
>   
> I’d recommend using DeferredReflection: 
>
>
> docs.sqlalchemy.org/en/rel_0_9/orm/extensions/declarative/api.html#sqlalchemy.ext.declarative.DeferredReflection
>  
>
>
> then to do the prepare: 
>
> with engine.begin() as connection: 
>         connection.execute(“SET search_path …”) 
>         DeferredReflection.prepare(connection) 
>
>
>
>
>
>
> > 
> > 
> > i tried deleting the Articolo module from sys.modules but the project 
> has 140 tables 20 in the promogest2 ( main scheme ) and the rest in the 
> others. 
> > with another very small project this way works but it is very ugly 
> solution. 
> > 
> > Using one schema it worked well in the last 8 years. 
> > 
> > sorry to bother you again 
> > 
> > F. 
> > 
> > 
> >   
> > 
> > Il giorno lunedì 19 gennaio 2015 02:43:06 UTC+1, Michael Bayer ha 
> scritto: 
> > the ‘schema’ is a fixed name within the Table object.  If you want to 
> work on a different schema on each request, set up search_path on the 
> connection at the start of the request: 
> > 
> > 
> http://www.postgresql.org/docs/9.1/static/ddl-schemas.html#DDL-SCHEMAS-PATH 
> > 
> > 
> > 
> > 
> > M3nt0r3 <m3n...@gmail.com> wrote: 
> > 
> > > Hi, 
> > > 
> > > I have a postgresql with many scheme, every schema is a company. 
> > > I am trying to change the scheme to match the user is making the login 
> or change the schema per subdomain. ( at wsgi level it already worked ) 
> > > when the first user make the login is ok , meta and mappers are there 
> "mapped" to the right scheme but when i try to change scheme, (making some 
> Metadata.clear() or other stuff) the mapper still return the old scheme. I 
> think it is not possibe to map ALL the schemas in the DB because of the 
> same name of the tables and of the Mapper Classes too. 
> > > i am  searching for some documentation, some advice 
> > > 
> > > thanks 
> > > 
> > > -- 
> > > 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. 
> > > To post to this group, send email to sqlal...@googlegroups.com. 
> > > Visit this group at http://groups.google.com/group/sqlalchemy. 
> > > For more options, visit https://groups.google.com/d/optout. 
> > 
> > -- 
> > 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 http://groups.google.com/group/sqlalchemy. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to