So what about one table only?
(main idea taken from http://wiki.sqlobject.org/joinexample.html)

sqlhub.processConnection = connectionForURI('sqlite:/:memory:')
class Blocks(SQLObject):
    name=StringCol()
    parent=ForeignKey("Blocks", default=None)
    child=SingleJoin("Blocks", joinColumn="parent_id")

Blocks.createTable()

blockA = Blocks(name="blockA",)
blockB = Blocks(name="blockB", parent=blockA)
blockC = Blocks(name="blockC", parent=blockB)

for row in Blocks.select():
    print "ROW:", row
    print "PARENT:", row.parent
    print "CHILD:", row.child

Petr
PS: please try to "reply to all" so others in the SQLobject discussion group
can profit as well

On Thu, Jan 8, 2009 at 10:53 AM, Zoran Bošnjak <
zoran.bosn...@sloveniacontrol.si> wrote:

>  For example:
>
> The schema:
> BlockA  --------> BlockB -------> BlockC
>
> We have 3 blocks and 2 connections. For this case the data in the table
> should be:
>
> Block table:
> id | name
> -----------
> 1 | "BlockA"
> 2 | "BlockB"
> 3 | "BlockC"
>
> Connection table:
> id | src | dst
> ---------------
> 1 | 1 | 2                    # BlockA -> BlockB connection
> 2 | 2 | 3                    # BlockB -> BlockC connection
> ...
> 3 | 1 | 1         # this is connection from BlockA to itself, but this is
> OK (not shown on the schema above)
> 4 | 3 | 4         # wrong entry... it should not be possible to enter
> something like this in a database, block with id 4 is non-existant!
>
> Now, how should I declare classes for Block and Connection table?
> Each entry in a connection table should have id and
> src, which should be a reference to an existing block, and
> dst, which should be again a reference to an existing block
>
> Thank you for your answer.
>
> Zoran
>
>  ------------------------------
> *From:* petr.jakes....@gmail.com [mailto:petr.jakes....@gmail.com] *On
> Behalf Of *Petr Jakeš
> *Sent:* Thursday, January 08, 2009 8:39 AM
> *To:* Zoran Bošnjak
> *Subject:* Re: FW: [SQLObject] table ralations
>
> Zoran,
> I do not really understand, what you are trying to do. Can you send me a
> short example of data for both tables?
> Petr
>
> On Thu, Jan 8, 2009 at 8:36 AM, Zoran Bošnjak <
> zoran.bosn...@sloveniacontrol.si> wrote:
>
>>  Petr,
>> do you understand my question. Can you help me solve it?
>>
>> regards,
>> Zoran
>>
>>  ------------------------------
>> *From:* Zoran Bošnjak
>> *Sent:* Wednesday, January 07, 2009 10:17 AM
>> *To:* 'petr.ja...@tpc.cz'
>> *Cc:* sqlobject-discuss@lists.sourceforge.net
>> *Subject:* RE: [SQLObject] table ralations
>>
>>  Sorry for the confusion...
>>
>> I don't want to have a "Connection" in a database unless the connection is
>> between existing "Blocks".
>>
>> Please correct my class definition for Block and Connection so, that it
>> won't be even possible to create such connection.
>>
>> Zoran
>>
>>
>>  ------------------------------
>> *From:* petr.jakes....@gmail.com [mailto:petr.jakes....@gmail.com] *On
>> Behalf Of *Petr Jakeš
>> *Sent:* Wednesday, January 07, 2009 9:51 AM
>> *To:* Zoran Bošnjak
>> *Cc:* sqlobject-discuss@lists.sourceforge.net
>> *Subject:* Re: [SQLObject] table ralations
>>
>>  # create dumb connection
>>> # it should not work, because there is no blocks!!!
>>> Connection(src=150, dst=250)
>>
>>
>> Why do you think this should not work? AFIK above mentioned just insert
>> one row (record) in your table Connection. Exactly as the SQL below
>> describes.
>>
>>>
>>> INSERT INTO "connection" VALUES(1,150,250); COMMIT;
>>> sqlite>
>>
>>
>> Petr
>>
>>
>
------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to