Cambiar definicion de una funcion (Re: DB API 2.0)

Chema Cortés chemacortes en wanadoo.es
Dom Jun 23 23:32:39 CEST 2002


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

Bueno, le he dado algunas vueltas de tuerca más pensando en cómo "corregir" el 
módulo MySQLdb en caliente para que 'connect' acepte 'database' como 
argumento en lugar de 'db'. Ya sé que es complicarse mucho, pero como creo 
que puede resultar bastante ilustrativo para otros casos similares, lo pongo 
aquí para quien le pueda interesar:

Creamos un módulo nuevo llamado "MySQLdb_wrapper.py":

#--- (módulo MySQLdb_wrapper) ----------------

import MySQLdb

save_connect=MySQLdb.connect
del MySQLdb.connect

def connect(*args,**kwargs):

  # Cambiamos el argumento "database" por "db"
  if kwargs.has_key("database"):
    kwargs["db"]=kwargs["database"]
    del kwargs["database"]

  return save_connect(*args,**kwargs)

MySQLdb.connect=connect

#--- (fin módulo) -----------------------------


Para usarlo, haríamos:

### import MySQLdb
from MySQLdb_wrapper import MySQLdb

db = MySQLdb.connect(database="mydb", user="kmilo", host="localhost")




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

iD8DBQE9Fj53HLTQrABk8H0RApaoAKCzcpJTts9Bmajbtmxyr0GEF3NPdACfftRL
ZTjUtwu/8bjKUgAbdMMv+Ok=
=xVbh
-----END PGP SIGNATURE-----


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