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