Hey<br><br><div class="gmail_quote">On Wed, Apr 1, 2009 at 7:39 AM, adevc <span dir="ltr"><<a href="mailto:f.s.silvestris@gmail.com">f.s.silvestris@gmail.com</a>></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 'many to many' 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's more about SQLAlchemy [1] than megrok.rdb I think (at least "my way")<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> "client_services",<br>
metadata,<br> schema.Column("client_id",<br> types.Integer,<br> schema.ForeignKey("<a href="http://clients.id">clients.id</a>")),<br>
<br> schema.Column('service_id',<br> types.Integer,<br> schema.ForeignKey("<a href="http://services.id">services.id</a>"))<br>)<br><br>class Client(rdb.Model):<br>
rdb.metadata(metadata)<br> rdb.tablename("clients")<br><br> id = schema.Column(types.Integer)<br> ....<br><br> services = orm.relation("Services",<br> secondary=client_services, backref="clients")<br>
<br>class Service(rdb.Model):<br> rdb.metadata(metadata)<br> rdb.tablename("services")<br> <br> id = schema.Column(types.Integer)<br> ...<br><br>Then, you should be able to write something like:<br>
<br>>>> from megrok import rdb<br>>>> session = rdb.Session()<br>>>> ser1 = Service()<br>>>> ser2 = Service()<br>>>> session.add(ser1)<br>>>> session.add(ser2)<br>>>> session.flush()<br>
<br>
>>> c1 = Client()<br>
>>> c2 = Client()<br>>>> c1.services = [ser1, ser2]<br>>>> c2.services = [ser1]<br>>>> 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>