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