sharing objects between classes
Diez B. Roggisch
deets at nospam.web.de
Mon Jan 28 10:30:29 EST 2008
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
More information about the Python-list
mailing list