Hey<br><br><div class="gmail_quote">On Wed, Apr 1, 2009 at 7:39 AM, adevc <span dir="ltr">&lt;<a href="mailto:f.s.silvestris@gmail.com">f.s.silvestris@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Hi list,<br>
<br>
i am trying a &#39;many to many&#39; rdb relation in grok with megrok.rdb,<br>
zope.sqlalchemy.<br>
But it is going nowhere :)</blockquote><div><br>I found a way to have that kind of relationship. It&#39;s more about SQLAlchemy [1] than megrok.rdb I think (at least &quot;my way&quot;)<br><br>If we have two models (tables) `Clients` and `Services` and we want the relation N:N between these tables.<br>
<br><br>from sqlalchemy import schema, types, orm<br>from megrok import rdb<br><br>#Table to make the many-to-many relation between services and clients<br>client_services = schema.Table(<br>           &quot;client_services&quot;,<br>
           metadata,<br>           schema.Column(&quot;client_id&quot;,<br>                         types.Integer,<br>                         schema.ForeignKey(&quot;<a href="http://clients.id">clients.id</a>&quot;)),<br>
<br>           schema.Column(&#39;service_id&#39;,<br>                         types.Integer,<br>                         schema.ForeignKey(&quot;<a href="http://services.id">services.id</a>&quot;))<br>)<br><br>class Client(rdb.Model):<br>
    rdb.metadata(metadata)<br>    rdb.tablename(&quot;clients&quot;)<br><br>    id = schema.Column(types.Integer)<br>    ....<br><br>    services = orm.relation(&quot;Services&quot;,<br>                                      secondary=client_services, backref=&quot;clients&quot;)<br>

<br>class Service(rdb.Model):<br>    rdb.metadata(metadata)<br>    rdb.tablename(&quot;services&quot;)<br>    <br>    id = schema.Column(types.Integer)<br>    ...<br><br>Then, you should be able to write something like:<br>
<br>&gt;&gt;&gt; from megrok import rdb<br>&gt;&gt;&gt; session = rdb.Session()<br>&gt;&gt;&gt; ser1 = Service()<br>&gt;&gt;&gt; ser2 = Service()<br>&gt;&gt;&gt; session.add(ser1)<br>&gt;&gt;&gt; session.add(ser2)<br>&gt;&gt;&gt; session.flush()<br>
<br>
&gt;&gt;&gt; c1 = Client()<br>
&gt;&gt;&gt; c2 = Client()<br>&gt;&gt;&gt; c1.services = [ser1, ser2]<br>&gt;&gt;&gt; c2.services = [ser1]<br>&gt;&gt;&gt; session.flush()<br><br>If you need to add extra columns in the relation, you may want to take a look here [2]<br>
<br>Best regards<br><br><br>[1] <a href="http://www.sqlalchemy.org/docs/05/mappers.html#many-to-many">http://www.sqlalchemy.org/docs/05/mappers.html#many-to-many</a><br>[2] <a href="http://www.sqlalchemy.org/docs/05/mappers.html#association-pattern">http://www.sqlalchemy.org/docs/05/mappers.html#association-pattern</a><br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
Is there a grok example for a simple case (N:N) somewhere that one could<br>
study?<br>
<br>
thanks<br>
<font color="#888888"><br>
--<br>
View this message in context: <a href="http://www.nabble.com/Example-megrok.rdb-%27many-to-many%27-tp22823822p22823822.html" target="_blank">http://www.nabble.com/Example-megrok.rdb-%27many-to-many%27-tp22823822p22823822.html</a><br>

Sent from the Grok mailing list archive at Nabble.com.<br>
<br>
_______________________________________________<br>
Grok-dev mailing list<br>
<a href="mailto:Grok-dev@zope.org">Grok-dev@zope.org</a><br>
<a href="http://mail.zope.org/mailman/listinfo/grok-dev" target="_blank">http://mail.zope.org/mailman/listinfo/grok-dev</a><br>
</font></blockquote></div><br><br clear="all"><br>-- <br>Santiago Videla<br><a href="http://www.revolucionesweb.com.ar">www.revolucionesweb.com.ar</a><br><a href="http://www.linkedin.com/in/svidela">http://www.linkedin.com/in/svidela</a><br>
<br>Sigue la mata dando de que hablar siempre abajo y a la izquierda donde el pensamiento que se hace corazón resplandece con la palabra sencilla y humilde que l@s tod@s somos.<br>