Hi Nicolas!  I don't know if this helps much, but I don't have the same
problems using sqlobject-0.10.

If you can upgrade it may help.  This script works fine for me.  I think it
mimics what you're attempting to do.

from sqlobject import *
import datetime
import sys

# Setup the database connection.
database_uri = 'sqlite:/:memory:'
sqlhub.processConnection = connectionForURI(database_uri)

class Worktime(SQLObject):
   start = DateTimeCol()
   end = DateTimeCol( default=None )
   user = ForeignKey("User")

class User(SQLObject):
   user_name = UnicodeCol(length=16, alternateID=True,
                          alternateMethodName='by_user_name')
   email_address = UnicodeCol(length=255, alternateID=True,
                              alternateMethodName='by_email_address')
   display_name = UnicodeCol(length=255)
   password = UnicodeCol(length=40)
   worktimes = MultipleJoin("Worktime")

def main():
    User.createTable()
    Worktime.createTable()

    user = User(user_name = 'user', email_address = '[EMAIL PROTECTED]',
                display_name = 'gw', password='gogo')

    for x in range(5):
        Worktime(start = datetime.datetime.now(), user = user)

    assert len(user.worktimes) == 5

    assert Worktime.select(Worktime.q.user == user).count() == 5

    return 0

if __name__ == "__main__":
    sys.exit(main())

On Nov 7, 2007 4:59 PM, Nicolas Riedel <[EMAIL PROTECTED]> wrote:

> Hello,
>
> trying to understand SQLObject (using ist with Turbogears), but I don't
> get it to work properly.
>
> Got the model:
>
> class Worktime(SQLObject):
>    start = DateTimeCol()
>    end = DateTimeCol( default=None )
>    user = ForeignKey("User")
>
> class User(SQLObject):
>    user_name = UnicodeCol(length=16, alternateID=True,
>                           alternateMethodName='by_user_name')
>    email_address = UnicodeCol(length=255, alternateID=True,
>                               alternateMethodName='by_email_address')
>    display_name = UnicodeCol(length=255)
>    password = UnicodeCol(length=40)
>    worktimes = MultipleJoin("Worktime")
>
>
>
> This call results in an Error:
> wt = Worktime.select(Worktime.q.user==identity.current.user)
> " AttributeError: Worktime instance has no attribute 'user' "
>
> I see the attribute   :)
> The strangest thing is, this error occures since an update to SO 0.9.2.
>
> Before that, I was using SO 0.7.7, which didn't show that error, but
> returned (with the same call) every row twice.
>
> I don't get SQLObject, I thought it should speed up my development, but
> I clearly does not.
>
> Thanks a lot, for listening to my whinig   :)  , hope you can help me!
>
> Sincerly,
>
> Nicolas
>
>
> PS:
>
> Using python2.4.4.
>
> Whole Error:
>
> Page handler: <bound method Root.index of <ntime.controllers.Root object
> at 0x206d070>>
> Traceback (most recent call last):
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/CherryPy-
> 2.2.1-py2.4.egg/cherrypy/_cphttptools.py",
> line 105, in _run
>    self.main()
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/CherryPy-
> 2.2.1-py2.4.egg/cherrypy/_cphttptools.py",
> line 254, in main
>    body = page_handler(*virtual_path, **self.params)
>  File "<string>", line 3, in index
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
> 1.0.4b1-py2.4.egg/turbogears/controllers.py",
> line 342, in expose
>    output = database.run_with_transaction(
>  File "<string>", line 5, in run_with_transaction
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
> 1.0.4b1-py2.4.egg/turbogears/database.py",
> line 316, in so_rwt
>    retval = func(*args, **kw)
>  File "<string>", line 5, in _expose
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
> 1.0.4b1-py2.4.egg/turbogears/controllers.py",
> line 359, in <lambda>
>    mapping, fragment, args, kw)))
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
> 1.0.4b1-py2.4.egg/turbogears/controllers.py",
> line 386, in _execute_func
>    output = errorhandling.try_call(func, *args, **kw)
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
> 1.0.4b1-py2.4.egg/turbogears/errorhandling.py",
> line 72, in try_call
>    return func(self, *args, **kw)
>  File "<string>", line 3, in index
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/TurboGears-
> 1.0.4b1-py2.4.egg/turbogears/identity/conditions.py",
> line 235, in require
>    return fn(self, *args, **kwargs)
>  File "/Users/nr/sw/nTime/ntime/controllers.py", line 76, in index
>    return dict( worklist = wts, times = times, nowworking =
> self._isworking(),
>  File "/Users/nr/sw/nTime/ntime/controllers.py", line 125, in _isworking
>    wt = Worktime.select(Worktime.q.user==identity.current.user)
>  File
>
> "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/site-packages/SQLObject-
> 0.9.2-py2.4.egg/sqlobject/sqlbuilder.py",
> line 394, in __getattr__
>    raise AttributeError("%s instance has no attribute '%s'" %
> (self.soClass.__name__, attr))
> AttributeError: Worktime instance has no attribute 'user'
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by: Splunk Inc.
> Still grepping through log files to find problems?  Stop.
> Now Search log events and configuration files using AJAX and a browser.
> Download your FREE copy of Splunk now >> http://get.splunk.com/
> _______________________________________________
> sqlobject-discuss mailing list
> sqlobject-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss
>



-- 
"Government does not solve problems; it subsidizes them."
Ronald Reagan
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to