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

Reply via email to