Hello,

I discovered SQLAlchemy yesterday, and have been trying to figure out
if its worth using as I rewrite my clunky code to maintain sql records
of parameter values of expensive data structures (large numpy arrays)
stored in Python shelves.

It looks fantastic, but not sure yet that it is the right tool.

Because I use extensive use of __getattr__ in my classes as currently
written, I added the __getattr__ method in this sample code from this
tutorial  (http://www.sqlalchemy.org/docs/05/ormtutorial.html).

################################################
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)
    def __init__(self, name, fullname, password):
        self.name = name
        self.fullname = fullname
        self.password = password

    def __getattr__(self,attr):
        print "called __getattr__ %s" % attr

    def __repr__(self):
        return "<User('%s','%s', '%s')>" % (self.name, self.fullname,
self.password)
#####################################

I got this error:

>>> u = User('jon','jon jon','jj')
called __getattr__ _sa_instance_state
>>> session.add(u)
called __getattr__ _sa_instance_state
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File ".../SQLAlchemy-0.5.0-py2.5.egg/sqlalchemy/orm/session.py",
line 1096, in add
    self._save_or_update_state(state)
  File ".../SQLAlchemy-0.5.0-py2.5.egg/sqlalchemy/orm/session.py",
line 1105, in _save_or_update_state
    self._save_or_update_impl(state)
  File ".../SQLAlchemy-0.5.0-py2.5.egg/sqlalchemy/orm/session.py",
line 1264, in _save_or_update_impl
    if state.key is None:
AttributeError: 'NoneType' object has no attribute 'key'
>>>

then I changed to:

    def __getattr__(self,attr):
        print "called __getattr__ %s" % attr
        Base.__getattr__(attr)

and

>>> session.add(u)

runs without error.

I'm definitely in over my head at this point, but I'd like to know if
this is a reasonable solution or if I'm going to run problems with
SQLAlchemy regarding my reliance on __getattr__ down the road.  Any
pointers would be much appreciated.


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