Ugh, the datatype for vals.val should be float, or the argument passed should be 1 instead of 1.0, it's immaterial to the error im seeing.
On Sun, Sep 27, 2009 at 3:25 AM, BEES INC <bees....@gmail.com> wrote: > > Hi > > I am having a problem when i run the code below, it gives me the > following error: > > Traceback (most recent call last): > File "./alch.py", line 45, in <module> > f.add(datetime.now(), 1.0) > File "./alch.py", line 17, in add > self.vals[key] = value > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/orm/ > collections.py", line 1048, in __setitem__ > value = __set(self, value, _sa_initiator) > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/orm/ > collections.py", line 885, in __set > item = getattr(executor, 'fire_append_event')(item, _sa_initiator) > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/orm/ > collections.py", line 582, in fire_append_event > return self.attr.fire_append_event(self.owner_state, > self.owner_state.dict, item, initiator) > File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/ > lib/python2.6/site-packages/SQLAlchemy-0.5.6-py2.6.egg/sqlalchemy/orm/ > attributes.py", line 665, in fire_append_event > self.sethasparent(instance_state(value), True) > AttributeError: 'float' object has no attribute '_sa_instance_state' > > The code is just an example showing the issue, the real code is doing > more. > > Effectively, i have a class (Foo) that contains a dict, which i'm > using to store some key/value pairs. The container class (Vals) has > inherited from dict because I need a class when i create the relation > in Foo. > > I have a feeling I'm missing something simple but haven't yet worked > out what. > > Thanks > > #!/usr/bin/env python2.6 > > from sqlalchemy import * > from sqlalchemy.orm import sessionmaker, mapper, relation > from sqlalchemy.orm.collections import column_mapped_collection > from datetime import datetime > > class Vals(dict): pass > > class Foo(object): > > def __init__(self, name): > self.vals = Vals() > self.name = name > > def add(self, key, value): > self.vals[key] = value > > engine = create_engine('sqlite:///:memory:', echo=True) > meta = MetaData(bind=engine) > Session = sessionmaker(bind=engine) > > vals = Table('vals', meta, > Column('id', Integer, primary_key=True), > Column('date', DateTime), > Column('val', Integer), > Column('foo_id', Integer, ForeignKey('foo.id')) > ) > > mapper(Vals, vals) > > foo = Table('foo', meta, > Column('id', Integer, primary_key=True), > Column('name', String(50)) > ) > > mapper(Foo, foo, properties = dict( > vals = relation(Vals, collection_class = column_mapped_collection > (vals.c.date)) > )) > > sess = Session() > meta.create_all() > > f = Foo('hello') > f.add(datetime.now(), 1.0) > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---