Hello,
I have 2 simple tables:
- block table (set of blocks)
- connection tables (connections between blocks)

I would like to setup a database to prevent creating connection to/from 
non-existant blocks.
For example: If I start with empty database, the script below should fail (but 
instead... the connection between nonexistant blocks is created).
What's wrong?

If I delete a block, all connection related to this block should be deleted 
automaticaly. This works fine with "cascade=True" option.

Thanks,
Zoran

------
#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys, os
from sqlobject import *

class Block(SQLObject):
    name = StringCol()

class Connection(SQLObject):
    src = ForeignKey('Block', cascade=True)
    dst = ForeignKey('Block', cascade=True)

db_filename = os.path.abspath(sys.argv[1]) print db_filename

# load database
connection_string = 'sqlite:' + db_filename connection = 
connectionForURI(connection_string)
sqlhub.processConnection = connection

# create tables
Block.createTable(ifNotExists=True)
Connection.createTable(ifNotExists=True)

# create dumb connection
# it should not work, because there is no blocks!!!
Connection(src=150, dst=250)

----

Dump database just created:

sqlite> .dump
BEGIN TRANSACTION;
CREATE TABLE block (
    id INTEGER PRIMARY KEY,
    name TEXT
);
CREATE TABLE connection (
    id INTEGER PRIMARY KEY,
    src_id INT CONSTRAINT src_id_exists REFERENCES block(id) ON DELETE CASCADE,
    dst_id INT CONSTRAINT dst_id_exists REFERENCES block(id) ON DELETE CASCADE 
); 
INSERT INTO "connection" VALUES(1,150,250); COMMIT;
sqlite> 


------------------------------------------------------------------------------
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