Código python:
Ver originalclass GestorBD(object):
instance=None
i = 0
def __new__(cls, *args, **kargs):
if cls.instance is None:
cls.instance=object.__new__(cls, *args, **kargs)
return cls.instance
def __init__(self):
self.i += 1
print "Me he ejecutado", self.i, "veces"
singleton1 = GestorBD()
singleton2 = GestorBD()
print singleton1.i
print singleton2.i
Inicia una nueva conexión, pero esta sigue siendo única. En pocas palabras diaria que actualiza la conexión.
Puedes verlo en el ejemplo anterior, cada vez que creas un objeto este primero llama a __new__ y luego a __init__. Pero con cada llamada a __init__ redefines el objeto.
Una solucion prodria ser, ponerlo de la siguiente manera:
Código python:
Ver originalclass GestorBD(object):
instance=None
conexion=psycopg.connect("host='xxx.xxx.xxx.xxx' port= 'xxx' dbname='xx' user= 'xx' password= 'xx'")
def __new__(cls, *args, **kargs):
if cls.instance is None:
cls.instance=object.__new__(cls, *args, **kargs)
return cls.instance
def execute(self, consulta):
self.cursor=self.conexion.cursor()
self.cursor.execute(consulta)
registros=self.cursor.fetchall()
return registros