OMG, I didn't read the second sentence on the page. Sorry for that. Klaus
On 19 Mai, 19:21, Michael Bayer <[email protected]> wrote: > log in as guest/guest > > On May 19, 2009, at 11:52 AM, klaus wrote: > > > > > How do I get the privileges for that? > > > On 19 Mai, 17:33, Michael Bayer <[email protected]> wrote: > >> it seems like a small bug and you can file a ticket for that, but > >> the > >> intent is that you'd be using None to represent NULL in the general > >> case. > > >> On May 19, 2009, at 11:21 AM, klaus wrote: > > >>> Hi! > > >>> Here is a small (and not very useful) example to demonstrate the > >>> problem. A table "user" contains a reference to itself (so that I > >>> don't need a second table). This foreign key translates to a > >>> relation. > >>> When I compare the corresponding attribute to null(), I get a > >>> traceback. It all works if I compare it to None instead. > > >>> from sqlalchemy.engine import create_engine > >>> from sqlalchemy.schema import MetaData, Table, Column, ForeignKey > >>> from sqlalchemy.types import Integer > >>> from sqlalchemy.orm import mapper, relation, create_session > >>> from sqlalchemy.sql import null > > >>> engine = create_engine("postgres://...") > >>> metadata = MetaData(engine) > > >>> user = Table("user", metadata, > >>> Column("id", Integer, nullable=False, primary_key=True), > >>> Column("fk", Integer, ForeignKey("public.user.id")), > >>> schema="public", useexisting=True, autoload=False) > > >>> class User(object): > >>> pass > > >>> mapper(User, user, properties={"ref": relation(User, > >>> uselist=False)}) > > >>> metadata.create_all() > > >>> session = create_session() > > >>> print session.query(User).filter(User.ref == null()).all() > > >>> metadata.drop_all() > > >>> (The last line is not executed.) > > >>> Here's the traceback: > > >>> Traceback (most recent call last): > >>> File "sqlatest.py", line 24, in ? > >>> print session.query(User).filter(User.ref == null()).all() > >>> File "/home/barthelmannk/PortaleHeadZope/sandbox/eggs/ > >>> SQLAlchemy-0.5.4p1-py2.4.egg/sqlalchemy/sql/expression.py", line > >>> 1253, > >>> in __eq__ > >>> return self.operate(operators.eq, other) > >>> File "/home/barthelmannk/PortaleHeadZope/sandbox/eggs/ > >>> SQLAlchemy-0.5.4p1-py2.4.egg/sqlalchemy/orm/attributes.py", line > >>> 120, > >>> in operate > >>> return op(self.comparator, *other, **kwargs) > >>> File "/home/barthelmannk/PortaleHeadZope/sandbox/eggs/ > >>> SQLAlchemy-0.5.4p1-py2.4.egg/sqlalchemy/orm/properties.py", line > >>> 492, > >>> in __eq__ > >>> return _orm_annotate(self.property._optimized_compare(other, > >>> adapt_source=self.adapter)) > >>> File "/home/barthelmannk/PortaleHeadZope/sandbox/eggs/ > >>> SQLAlchemy-0.5.4p1-py2.4.egg/sqlalchemy/orm/properties.py", line > >>> 623, > >>> in _optimized_compare > >>> value = attributes.instance_state(value) > >>> AttributeError: '_Null' object has no attribute '_sa_instance_state' > > >>> Cheers > >>> Klaus --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" 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/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---
