Hi list, 

this is my first post on this list I guess, so please forgive my newbiness and 
my ignorance of this list etiquette (if any).

So here's a little piece of code that illustrates my situation on foreign key 
constraints :

(briefly : the delete function should break, but it doesen't)

<code>

from elixir import *

class BaseModel(Entity):
    using_options(abstract=True)

    repr_attr = "name"

    def __repr__(self):
        """
        """
        return "<%s '%s' id='%s'>" % 
(self.__class__.__name__,getattr(self,self.repr_attr,id(self)),self.id)
    
class Country(BaseModel):
    """
    """
    using_options(tablename = "countries")

    name       = Field(Unicode)
    cities     = OneToMany("City")

class City(BaseModel):
    """
    """
    using_options(tablename = "cities")

    name    = Field(Unicode)
    country = ManyToOne("Country",ondelete="RESTRICT")

metadata.bind = "postgres://auser:somepas...@somedhost/somedb"
# I use this to issue some raw sql (truncate not supported by sqla/elixir ?)
session.bind = metadata.bind
drop_all()
setup_all(True)

# This line will break if uncommented, because of fk constraints
#session.execute("TRUNCATE TABLE cities")
session.execute("TRUNCATE TABLE countries CASCADE")
session.commit()

# just to make them global
algeria = None
algiers = None

def create():
    global algeria,algiers
    algeria = Country(name=u"Algeria")
    algiers = City(name=u"Algiers",country=algeria)
    session.commit()
    algeria.delete()

def delete():
    global algeria,algiers
    # THIS DOSEN'T BREAK which is NOT what we want
    algeria.delete()
    session.flush()
 
create()
delete()

</code>


I'm sure I'm missing something, but where ?... 

Thanks for your help.

Y.Chaouche




      

-- 
You received this message because you are subscribed to the Google Groups 
"SQLElixir" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sqlelixir?hl=en.

Reply via email to