Re: SqlObject Sqlmeta fromDatabase problem

Oleg Broytman <[email protected]>
Newsgroups gmane.comp.python.sqlobject
Message-ID <[email protected]>
Hi!

On Sun, Mar 25, 2012 at 06:56:32PM -0500, Jeremy Hoyle wrote:
> I have a problem while trying to use the "fromDatabase = True" option in
> sqlmeta. Any time I enable this. it gives me the connection error below. Is
> there another attribute I need to do before doing this? I saw another
> thread with this problem but the solution was enable the connection before
> the class which I have done.
> 
> from sqlobject import *
> 
> class Companys(SQLObject):
>      def __init__(self):
>         connection_string = 'mysql://user:[email protected]:3306/pySMS'
>         conn = connectionForURI(connection_string,debug = True,autoCommit =
> True)
>         trans = conn.transaction()
>         sqlhub.processConnection = conn
>         Company.createTable(ifNotExists = True, connection=conn)
>         Company._connection.debug = True

   A number of problems here.
1. The connection is created in Companys.__init__ which is not called,
at least it is not called when SQLObject's metaclass processes
fromDatabase. fromDatabase requires an open connection.
2. A transaction is opened but never used. Transaction (trans, in your
case) has to be used instead of connection (in sqlhub, or in every
SQLObject call that accepts connection).

> class Company(SQLObject):
> 
>     class sqlmeta:
>        fromDatabase = True
>        lazyUpdate = True
>        cacheValues = True
> 
>     Company_Name = StringCol(length = 256, default = None)
>     Company_Address = StringCol(length = 256, default = None)
>     Company_Phone = StringCol(length = 256, default = None)
> 
> Traceback (most recent call last):
>   File "C:\Pysoft\Software\SMS Development\tests\test0.py", line 5, in
> <module>
>     from pySMS import Companys
>   File "C:\Pysoft\Software\SMS Development\pySMS\__init__.py", line 1, in
> <module>
>     from Company import Companys
>   File "C:\Pysoft\Software\SMS Development\pySMS\Company.py", line 138, in
> <module>
>     class Company(SQLObject):
>   File
> "C:\Python27\lib\site-packages\sqlobject-1.2.1-py2.7.egg\sqlobject\declarative.py",
> line 92, in __new__
>     cls.__classinit__(cls, new_attrs)
>   File
> "C:\Python27\lib\site-packages\sqlobject-1.2.1-py2.7.egg\sqlobject\main.py",
> line 789, in __classinit__
>     sqlmeta.addColumnsFromDatabase()
>   File
> "C:\Python27\lib\site-packages\sqlobject-1.2.1-py2.7.egg\sqlobject\main.py",
> line 441, in addColumnsFromDatabase
>     conn = connection or soClass._connection
>   File
> "C:\Python27\lib\site-packages\sqlobject-1.2.1-py2.7.egg\sqlobject\dbconnection.py",
> line 902, in __get__
>     return self.getConnection()
>   File
> "C:\Python27\lib\site-packages\sqlobject-1.2.1-py2.7.egg\sqlobject\dbconnection.py",
> line 915, in getConnection
>     "No connection has been defined for this thread "
> AttributeError: No connection has been defined for this thread or process

Oleg.
-- 
     Oleg Broytman            http://phdru.name/            [email protected]
           Programmers don't die, they just GOSUB without RETURN.

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.