Consulta Python 2.4.1 y MySQL 4.1

Fernando San Martín Woerner snmartin en galilea.cl
Lun Jul 4 23:10:45 CEST 2005


La verdad afortunadamente no tengo ni idea de mysql, pero en el caso de
postgresql que maneja transacciones desde siempre, es asi. Las
conecciones a la base de datos declaran una transaccion implicita, por
lo que debes usar el metodo commit() de la coneccion, o cambiar el
estado de la propiedad autocommit de falso a verdadero, dependiendo del
modulo eso lo haces en una propiedad o con una llamada a un metodo.

Por otra parte creo que el problema es que hay un bug en tu codigo,
estas conectando dos veces, eso es muy mala idea (igual que usar mysql),
deberias tener una sola coneccion y de ahi sacar más cursores, pero
nunca más de un objeto de coneccion.


ej:

sql = 'UPDATE dolar set valor = 100.10 where N_mes = ' + str(mes) + '
and  
N_dia = ' + str(dia) + ';'
conn = Conecta(None, "tablas_generales")
regis = modifica(conn, sql)
sql = 'COMMIT;'
regis = modifica(conn, sql)
conn.close()

por otra parte para que cambias los nombres de los metodos? no es mejor:

conn = tu_modulo.connect(...)
cursor = conn.cursor()
cursor.execute(sql)
cursor.execute("commit")

al menos eso es mucho más parecido a la DBAPI 2.0, y leible por el resto
de los mortales.

te recomiendo hacer en el modo interactivo de python

import tu_modulo_db
c = connect()...
dir(c)

o en vez de dir(c)

import tu_modulo_db
c = connect()...
help(c)

con eso debiera bastar, al menos a mi me funciona en mi humilde linux,
también tengo la fortuna de saber muy poco acerca de XP.

saludos

-- 
Fernando San Martín Woerner
Jefe de Informática 
Galilea S.A.




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