Thank you very much for your advice.
Le mardi 6 mai 2014 17:21:55 UTC+2, Michael Bayer a écrit : > > set_shard is a special method added by the horizontal sharding extension. > > you can do cross schema queries if you organize the schema names in terms > of which ones apply to the “dynamic” shard and which ones to the “fixed” > shard, if that’s how it works. > > If OTOH you literally need to join against multiple, dynamically named > shards at one time, then you need to spell those out explicitly. it gets > more ugly but if you want a Table that is on the fly linked to a certain > schema explicitly you can use table.tometadata(), see > http://docs.sqlalchemy.org/en/rel_0_9/core/metadata.html?highlight=tometadata#sqlalchemy.schema.Table.tometadata > . > > > > On May 6, 2014, at 3:06 AM, Julien Meyer <julien...@gmail.com<javascript:>> > wrote: > > My real database schema is a little more complex. > In reality, I have one database by company. In each database, I have > multiple schemas who contain the same table structure. > > The solution "schema name execution" will not work in the case when I need > to access to more than one schema by request. > > The Horizontal sharding can work : one engine by schema and set the search > path when creating the engine. During the request processing, I can > identify wich schema to use and with the use of "set_shard" on the Query > object (not found in the documentation, normal ?), I can easely select the > good shard to use. > > But I don't know how I can make a cross schema query in this case? > > Le lundi 5 mai 2014 19:12:06 UTC+2, Michael Bayer a écrit : >> >> part of a feature that will make this kind of thing more direct is the >> “schema name execution argument” feature, which is >> https://bitbucket.org/zzzeek/sqlalchemy/issue/2685/default-schema-as-an-execution-argument >> . >> >> This application is somewhat of a “multi-tenancy” application; >> technically its horizontally partitioned but if you know “society” up front >> and for the duration of an operation, you can just set that and be done >> with it. >> >> Assuming this is the case an easy way to do this for now is just to set >> the “search path” on your postgresql connection before such an operation >> proceeds. That way when you refer to table X or Y, it will be in terms of >> whatever search path you’ve set, see 5.7.3 at >> http://www.postgresql.org/docs/8.1/static/ddl-schemas.html. >> >> There’s no need in that case to use any kind of explicit “horizontal >> sharding”. Only if you need queries that are going to refer to multiple >> schemas at once does the HS feature come into play (and if that were the >> case I’d look into PG table inheritance). >> >> >> >> >> On May 5, 2014, at 8:41 AM, Julien Meyer <julien...@gmail.com> wrote: >> >> I need some help and advices to create a mapping. >> >> The context : >> - Multiple schemas on postgresql (dynamic number and name) who store the >> "same" tables. >> - SQLAlchemy used into a pyramid web application. >> >> Example : >> A table "Customer" and a table "CustomerOrder" (link by customer.id) and >> a schema by society (not know before running) >> >> >> I read the documentation about horizontal, vertical sharding and entity >> name but I'm a little bit confused about the good solution to solve my >> problem. >> >> If I use "Entity name", I don't know how to configure the relationship >> between my two dynamic classes because I need to specify a class at >> configuration time but i really know the real subclasses only at runtime. >> >> If I use the "Horizontal sharding", I need to have an engine / schema >> (and use search_path). The shard configurtion will be (or seems to be) >> tricky. >> >> If I use the "Vertical sharding", I need also an engine / schema and >> re-configure the session several times with a new binds mapping. >> >> I made some google search with my context but it's not an usual case and >> i didn't find some helpful posts.... >> >> I also posed the question on stackoverflow last year but my solution >> don't really work : >> http://stackoverflow.com/questions/20212165/one-entity-in-multiple-schemas-how-to-switch-schema-on-runtime >> >> Thanks in advance. >> >> -- >> 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.