variables en app de wxPython

Amm-Python python en ammsoft.com
Sab Dic 31 14:28:30 CET 2005


Yo lo que hago es tener un modulo con las variables que utilizo de forma
global.

VariablesGlobales.py

LstDB = {"ORACLE" : "cx_Oracle", "ACCESS" : "win32com.client", "MYSQL" :
"MySQLdb"}

# estructura configuración conexión DDBB
_ConfigDBDefault = {
    "database.tipo":            "ORACLE",
    "database.database":        "",
    "database.username":        "",
    "database.pwd":             "",
    }
   
DBDefConfig = _ConfigDBDefault #trabajo sobre una copia del diccionario
#si trabajaba directamente con el diccionario me hacía cosas raras.

myDBs = None #Objeto base de datos
myCursor = None #objeto cursor básico de la base de datos
qmark = "" #tipo marca paramstyle de la base de datos



Y para referirme a ellas para poner los valores o leerlos basta con
importar el módulo y utilizar las variables.

Programa.py

import VariablesGlobales
 
_G = VariablesGlobales #para abreviar la referencia a las variables

....

import cx_Oracle
_G.qmark = cx_Oracle.paramstyle #'named'
        
DSN1 = _G.DBDefConfig['database' + '.' + 'database'] #base de datos
DSN2 = _G.DBDefConfig['database' + '.' + 'username'] #usuario
DSN3 = _G.GavDescifrar(_G.DBDefConfig['database' + '.' + 'pwd'])
#password
#los passwords siempre los encripto por si las moscas.
#no se hasta que punto es pública la información 
#de las variables que utiliza python.
#además los parámetros de conexión los guardo en un fichero .ini
#por lo que más vale que los datos de conexión no sean visibles.
#Para ello utilizo el módulo Crypto 
# http://www.amk.ca/python/code/crypto

	try:
            _G.myDBs = cx_Oracle.connect("%s/%s@%s" % (DSN2,DSN3,DSN1))
            _G.myCursor = _G.myDBs.cursor()
            rt = True #conexión a la base de datos correctamente
	except (Exception),e:
            print _('Imposible conectarse a la base de datos'),e
		rt = False #conexión a la base de datos no realizada


Lo único a tener en cuenta es que no pueden ser variables que cambien
dependiendo de los módulos en uso.
Es decir; que necesites diferentes valores dependiendo de lo que estés
haciendo.
En tal caso habría que montar una clase para cada tipo de conexión y
pasar la referencia de la misma como parámetro.
Es el caso en el que me encuentro ahora, ya que debo conectarma a varios
tipos de bases de datos diferentes al mismo tiempo e intercambiar
información entre ellas.
No se si era esto lo que necesitabas o si es la forma más adecuada de
hacerlo.
Así me lo contaron y así lo cuento.

> -----Mensaje original-----
> De: python-es-bounces en aditel.org 
> [mailto:python-es-bounces en aditel.org] En nombre de Carlos 
> Eduardo Sotelo Pinto
> Enviado el: divendres, 30 / desembre / 2005 15:32
> Para: python-es en aditel.org
> Asunto: [Python-es] variables en app de wxPython
> 
> 
> Hola amigos, alguien sabes como usar una sola variable en 
> todo una aplicacion de wxpython.... paso a explicar
> 
> Tengo una app de wxPython, la cual cotiene tres carpetas (paquetes)
> 
> -client. Los wxWidgets
> -batabase. Clases de negocios
> -bussines. Clase de acceso a base de datos
> 
> encima de estos tres temgo mi archivo principal.. mi wxApp, 
> en este nivel creo una variable de acceso a datos para que 
> esta se mantenga a lo largo de toda la aplicacion, como 
> coneccion persistente. Actualmente me encuatro pasando esta 
> variable de objeto coneccion de base de datos para cada uno 
> de los modulos en el momento de cargarlo, pero mi duda, es 
> hay una forma de hacer uso de esta variable sin pasarla de 
> modulo en modulo, o tal vez, asi como accedo a mis attributos 
> de objeto mediante el self.... tambien puedo accedera los 
> parents... alguna sugerencia... o una mejor forma de 
> hacerlo... saludos
> 
> Feliz Navidad a todos y un venturoso anio nuevo
> 
> Carlos
> 
> 		
> ______________________________________________ 
> Renovamos el Correo Yahoo! 
> Nuevos servicios, más seguridad 
> http://correo.yahoo.es
> 




Más información sobre la lista de distribución Python-es