Re: sharing objects between classes

2008-01-28 Thread gherzig
> Diez B. Roggisch a écrit :
>> Gerardo Herzig wrote:
>>
>>> Hi all. Im wondering the way to share a database connection between
>>> some
>>> classes:
>>>
>>> So far, i came up with a simple class schema, where each class means
>>> each different relation, i mean i have the follow classes
>>>
>>> class Database(object):
>>>   ## make the connection
>>>   self.conn = make_conn()
>>>
>>> class Table(object):
>>>   def get_fields:
>>> 
>>>
> (snip)
>>
>> Take a look at the sources of e.g. SQLObject and how they do it (in SO,
>> the
>> concept is called "HUB")
>>
> And while you're at it, take a look at SQLAlchemy too, and ask yourself
> if you really need to roll your own solution !-)

Yes, i dont need to reinvent the wheel, i know, it just seems like a
pattern i will have to deal with, not just in this case. SQLObject seems
like a big peace of code to read. At least to me (not that good
programmer).

I will take a look at SQLAlchemy, and see a little more.
Thanks!

Gerardo


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sharing objects between classes

2008-01-28 Thread Bruno Desthuilliers
Diez B. Roggisch a écrit :
> Gerardo Herzig wrote:
> 
>> Hi all. Im wondering the way to share a database connection between some
>> classes:
>>
>> So far, i came up with a simple class schema, where each class means
>> each different relation, i mean i have the follow classes
>>
>> class Database(object):
>>   ## make the connection
>>   self.conn = make_conn()
>>
>> class Table(object):
>>   def get_fields:
>> 
>>
(snip)
> 
> Take a look at the sources of e.g. SQLObject and how they do it (in SO, the
> concept is called "HUB")
> 
And while you're at it, take a look at SQLAlchemy too, and ask yourself 
if you really need to roll your own solution !-)
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: sharing objects between classes

2008-01-28 Thread Diez B. Roggisch
Gerardo Herzig wrote:

> Hi all. Im wondering the way to share a database connection between some
> classes:
> 
> So far, i came up with a simple class schema, where each class means
> each different relation, i mean i have the follow classes
> 
> class Database(object):
>   ## make the connection
>   self.conn = make_conn()
> 
> class Table(object):
>   def get_fields:
> 
> 
> And at this point i dont know how to use the Database.conn attribute,
> since the get_fields method will perform a query over the given database.
> At first, i just define the Table class as a inner class of Database,
> but if i try a
> class Database(object):
>   ## make the connection
>   def __init__(self):
> self.conn = sql_connect()
> self.table = Table('foo')
> 
>   class Table(object): ## inner class
> def get_fields(self, name):
> 
> 
> I get a "NameError: global name 'Table' is not defined".
> 
> So, which would the right pattern to use here? Using a global module? I
> dont know why, but i dont like that idea too much.
> 
> Any comments will be appreciated!
> Thanks!

Take a look at the sources of e.g. SQLObject and how they do it (in SO, the
concept is called "HUB")

Essentially, you set a reference to a global connection object that itself
isn't a simple global but useses threading.local to have one connection per
thread. Then you can access that connection transparently.

Diez
-- 
http://mail.python.org/mailman/listinfo/python-list


sharing objects between classes

2008-01-28 Thread Gerardo Herzig
Hi all. Im wondering the way to share a database connection between some 
classes:

So far, i came up with a simple class schema, where each class means 
each different relation, i mean i have the follow classes

class Database(object):
  ## make the connection
  self.conn = make_conn()

class Table(object):
  def get_fields:


And at this point i dont know how to use the Database.conn attribute, 
since the get_fields method will perform a query over the given database.
At first, i just define the Table class as a inner class of Database, 
but if i try a   
class Database(object):
  ## make the connection
  def __init__(self):
self.conn = sql_connect()
self.table = Table('foo')

  class Table(object): ## inner class
def get_fields(self, name):


I get a "NameError: global name 'Table' is not defined".

So, which would the right pattern to use here? Using a global module? I 
dont know why, but i dont like that idea too much.

Any comments will be appreciated!
Thanks!

Gerardo

-- 
http://mail.python.org/mailman/listinfo/python-list