I require that kind of thing, so I've assembled a little testcode to demonstrate
the problems.

Below is the vanilla many to many thing that doesn't error upon defintion (with
one minor glitch at the mapper, see #comments)

from sqlalchemy import *
from sqlalchemy.ext.proxy import ProxyEngine
engine = ProxyEngine()

foo = Table('foo', engine,
    Column('id', Integer, primary_key=True))

bar = Table('bar', engine,
    Column('id', Integer, primary_key=True))

foo_bar = Table('foo_bar', engine,
    Column('foo_id', Integer, ForeignKey('foo.id')),
    Column('bar_id', Integer, ForeignKey('bar.id')))

class Foo(object): pass
Foo.mapper = mapper(Foo, foo)
class Bar(object): pass
Bar.mapper = mapper(Bar, bar)

# Bar.mapper.add_property('foos', relation(Foo, foo_bar))
# ==> sqlalchemy.exceptions.ArgumentError: relation(class, table, **kwargs) is
# deprecated.  Please use relation(class, **kwargs) or relation(mapper,
**kwargs).

Bar.mapper.add_property('foos', relation(Foo.mapper, foo_bar))


Now when I throw in inheritance as in

bar = Table('bar', engine,
    Column('id', Integer, ForeignKey('foo.id'), primary_key=True))
Bar.mapper = mapper(Bar, bar, inherits=Foo.mapper)

and then try to
Bar.mapper.add_property('foos', relation(Foo.mapper, foo_bar))

I get:
Traceback (most recent call last):
  File "testalchemy.py", line 23, in ?
    Bar.mapper.add_property('foos', relation(Foo.mapper, foo_bar))
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/mapping/mapper.py",
line 195, in add_property
    prop.init(key, self)
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/mapping/mapper.py",
line 777, in init
    self.do_init(key, parent)
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/mapping/properties.py",
line 191, in do_init
    self._compile_synchronizers()
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/mapping/properties.py",
line 583, in _compile_synchronizers
    self.primaryjoin.accept_visitor(processor)
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/sql.py",
line 749, in accept_visitor
    c.accept_visitor(visitor)
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/sql.py",
line 819, in accept_visitor
    visitor.visit_binary(self)
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/mapping/properties.py",
line 969, in visit_binary
    self.func(binary)
  File
"/usr/local/lib/python2.4/site-packages/SQLAlchemy-0.1.2-py2.4.egg/sqlalchemy/mapping/properties.py",
line 575, in compile
    raise AssertionError("assert failed")
sqlalchemy.exceptions.AssertionError: assert failed

(a sidenote, assert failed isn't a very clever assert line :D)

----- End forwarded message -----




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Sqlalchemy-users mailing list
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to