dudas de cursores en MySQLdb

Chema Cortés py en ch3m4.org
Lun Sep 13 17:32:19 CEST 2004


On Sunday 12 September 2004 23:32, zako wrote:
> En la documentacion de MySQLdb pone que todos los cursores de una
> conexión estan sincronizados, pero mis dudas es como tener sincronizados
> todos los cursores ya que voy a tener diferentes conexiones, si necesito
> definir un tipo especial de cursor para mi caso y si necesito establecer
> candados a la hora de realizar la escritura en la base de datos (¿o esa
> labor ya la realiza la API?).

Con MySQL dependerá de si tienes o no transacciones (motor InnoDB ó MyISAM 
respectivamente). Como advertencia, algunas distribuciones linux como SuSE no 
incluyen por defecto soporte para InnoDB en MySQL (hay que instalar otro 
paquete llamado "mysql-Max"). Puedes averiguar qué tienes con "SHOW VARIABLES 
like 'have_%'" en la cónsola de mysql.

SIN TRANSACCIONES (MyISAM):
  Todos los cambios se efectúan instantáneamente, con lo que las conexiones 
trabajan siempre síncronamente. Se necesitará emplear bloqueos para evitar 
colisiones entre lecturas y escrituras de procesos distintos. MyISAM bloquea 
por tabla, cosa bastante pésima en la mayoría de los casos.

CON TRANSACCIONES (InnoDB): 
  Al tener varias conexiones activas, cada conexión tiene que consolidar sus 
propias transacciones antes de hacerlas visibles al resto de conexiones. Aún 
así el resto de conexiones podrían no ver los cambios de los demás hasta que 
no hayan consolidados sus propios cambios. Una opción sería activar el 
AUTOCOMMIT ("SET AUTOCOMMIT=1"), pero ésto no te va a solucionar el problema 
completamente cuando existan muchos procesos actuándos sobre los mismo datos.

Lo mejor es trabajarte un poco el tema de los bloqueos del InnoDB. Son 
bastante buenos, comparables a los que pueda ofrecerte Oracle, por ejemplo. 
Mírate la documentación de "SELECT..FOR UPDATE" y "SELECT..LOCK IN SHARE 
MODE" donde podrás ver la estrategia de InnoDB en el bloqueo por filas. Con 
un poco de experimentación creo que te solucionará el problema.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20040913/d13a9352/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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