DB API 2.0

kmilo kmilo en softhome.net
Dom Jun 23 21:26:16 CEST 2002


> 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/


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