subproceso python y mysqldump

Sé que partes de esta pregunta se han preguntado anteriormente, pero tengo algunas preguntas relacionadas.

Estoy tratando de ejecutar

mysqldump -u uname -ppassword --add-drop-database --databases databaseName | gzip > fileName

Estoy potencialmente descargando un db muy grande (200GB?) ¿Es eso en sí una cosa tonta que hacer? Luego quiero enviar el archivo comprimido a través de la red para su almacenamiento, eliminar el volcado local y purgar un par de tablas.

De todos modos, estaba usando un subproceso como este, porque no parece haber una manera de ejecutar toda la llamada original sin considerar el subproceso | para ser un nombre de tabla .:

from subprocess import Popen, PIPE

f = open(FILENAME, 'wb')
args = ['mysqldump', '-u', 'UNAME', '-pPASSWORD', '--add-drop-database', '--databases', 'DB']

p1 = Popen(args, stdout=PIPE)
P2 = Popen('gzip', stdin=p1.stdout, stdout=f)
p2.communicate()

pero luego leí que la comunicación almacena en caché los datos en la memoria, lo que no funcionaría para mí. ¿Es esto cierto?

Lo que terminé haciendo por ahora es:

import gzip
subprocess.call(args, stdout=f)
f.close()

f = open(filename, 'rb')
zipFilename = filename + '.gz'
f2 = gzip.open(zipFilename, 'wb')
f2.writelines(f)
f2.close()
f.close()

Por supuesto, esto lleva un millón de años, y lo odio.

Mis preguntas: 1. ¿Puedo usar mi primer enfoque en un db muy grande? 2. ¿Podría posiblemente canalizar la salida de mysqldump a un socket y dispararlo a través de la red y guardarlo cuando llegue, en lugar de enviar un archivo comprimido?

¡Gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta