[Python-es] DB API 2.0

Marcos Sánchez Provencio rapto en arrakis.es
Lun Jun 24 11:53:20 CEST 2002


import a secas no permite nombres variables

"kmilo" <kmilo en softhome.net> decía que:

> > def db_import(sgdb):
> >   if sgdb=="mysql":
> >     return __import__("MySQLdb")
> >   elif sgdb=="postgresql":
> >     return __import__("pgdb")
> >   else:
> >     return None
> 
> 
> por que tiene que ser __import__ en vez de import?
> 
> On Sat, 22 Jun 2002 17:50:23 +0200
> Chema Cortés <chemacortes en wanadoo.es> wrote:
> 
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > El Jue 20 Jun 2002 23:59, kmilo escribió:
> > 
> > > 1) la linea donde se importa el modulo adecuado para comunicarse con la
> > > base de datos
> > >
> > > *postgreSQL
> > > import pgdb
> > >
> > > *MySQL
> > > import MySQLdb
> > >
> > > 2)la linea en que se conecta a la base de datos
> > > *postgreSQL  
> > > db = pgdb.connect(database='mydb',user='kmilo', host='localhost')
> > >                   ^^^^^^^^
> > > *MySQL
> > > db = MySQLdb.connect(db="mydb", user="kmilo", host="localhost")
> > >                      ^^
> > >
> > > Es una lastima que la persona que hizo el modulo para MySQL no se ciqera  a
> > > la API y alla dejado la variable database como db
> > 
> > El nombre "database" es sólo una recomendación de la API2, algo que no tiene 
> > porqué ser obligario, y que incluso puede ser totalmente prescindible si 
> > trabajas con DSNs (en windows).
> > 
> > En lugar de tener dos ficheros separados "casi" idénticos, yo probaría a 
> > juntarlos en un único "supra-módulo" o, tal vez, en una clase (dependerá un 
> > poco del uso que le des):
> > 
> > def db_import(sgdb):
> >   if sgdb=="mysql":
> >     return __import__("MySQLdb")
> >   elif sgdb=="postgresql":
> >     return __import__("pgdb")
> >   else:
> >     return None
> > 
> > def db_parameters(sgbd, database, user, password, host):
> >   if sgdb=="mysql":
> >     params={"db":database,"user":user,"password":password,"host":host}
> >   elif sgdb=="postgresql":
> >     params={"database":database,"user":user,"password":password,"host":host}
> >   else:
> >     params={}
> >   return params
> > 
> > 
> > ####
> > # Ahora un ejemplo
> > 
> > mydb=db_import("mysql")
> > params=db_parameters(sgdb="mysql",database="mibase",user="yomismo",host="localhost")
> > db=mydb.connect(**params)
> > 
> > Ya sé que daña a los ojos este 'connect'. Lo mejor es seguir con la idea y 
> > completar la API de este supramódulo. La ventaja de hacerlo así es que 
> > resulta fácil añadir otros gestores de bases de datos sin cambiar mucho 
> > código.
> > 
> > > PDT2:
> > > chema, para efectos de mayor sencillez en el codigo, no puse el
> > > diccionario, pero pa la proxima lo hago, y gracias por lo del modulo
> > > mxDateTime
> > 
> > ¡Vamos!, lo dices como si fuera una obligación. Que a mí me encante usar 
> > diccionarios no quiere decir que sea lo mejor. A veces, lo que hoy me parece 
> > fenomenal, mañana me puede parecer muy mejorable. Señal de que todavía sigo 
> > aprendiendo ;-)
> > 
> > 
> > Saludos,
> > - -- 
> > Chema Cortes (chemacortes en wanadoo.es) | LinuxUser#142755 - SuSE Linux 8.0
> >   ZARALINUX  http://www.zaralinux.org | "La ignorancia se apodera de quien
> >     PYTANDO  http://pytando.sf.net    |     se contenta con lo que sabe"
> >       PGPKEY: mailto:chemacortes en wanadoo.es?subject=__PGPKEY__
> > 
> > -----BEGIN PGP SIGNATURE-----
> > Version: GnuPG v1.0.6 (GNU/Linux)
> > Comment: For info see http://www.gnupg.org
> > 
> > iD8DBQE9FJzAHLTQrABk8H0RAsCPAKCukfRMFDzAUNLgROwISMgRA8gntgCgw0PU
> > w76fs/QQ1qVz4dbwFMQ7ZpM=
> > =GUx7
> > -----END PGP SIGNATURE-----
> > _______________________________________________
> > Python-es mailing list
> > Python-es en aditel.org
> > http://listas.aditel.org/listinfo.py/python-es
> 
> 
> -- 
> What's Python Anyway ?   
> Well, that's easy: the most elegant, easy-to-learn and yet powerfull
> language on the planet	   
> 
> http://www.egenix.com/files/python/
> 
> Sent by Sylpheed 0.7.2 claws in SuSe 8.0 Profesional
> Linux user number 269263.
> Homepage: http://kmiloweb.netfirms.com/
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo.py/python-es


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