From virako.9 en gmail.com Mon May 2 10:52:30 2022 From: virako.9 en gmail.com (Victor Ramirez) Date: Mon, 2 May 2022 16:52:30 +0200 Subject: [Python-es] =?utf-8?q?Tertulia_python=2E_Martes_03_de_mayo_a_las?= =?utf-8?q?_21=3A30_CET_=28Horario_de_Espa=C3=B1a=29=2E?= Message-ID: Hola, Se convoca la Tertulia de la semana: ¿Cuándo? *Martes 03 de mayo* a las *21:30 CET (Horario de España).* ¿Dónde? https://meet.jit.si/py2022 Accesible desde cualquier navegador moderno y desde aplicación para Android e iOS. La sala estará bloqueada con clave, que se retirará a la hora de comienzo para permitir el acceso público. ¿Por qué? Porque tenemos ganas de hablar sobre python con más gente. Anímate, no se necesitan conocimientos avanzados, solo ganas de charlar y pasar un buen rato. ANUNCIO: Se busca: Se busca alguien con ganas de editar audio, mientras se sigue publicando el excelente trabajo que realizó Pablo en https://podcast.jcea.es/python/ Se recompensa con mucha satisfacción pero sin dinero. Otros detalles: - Se grabará el audio de la conversación con vistas a una difusión pública posterior (tipo podcast). Entendemos que los participantes están de acuerdo en ser grabados (solo audio, no video). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras se recordará al empezar. - Se agradece entrar con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero se agradece. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruido ambiente. Procura usar auriculares para evitar el retorno. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. Sería interesante que trajeras algo pensado. ¡Trae tu tema! - Al final de la tertulia, recomendamos algo que no tiene porqué estar relacionado con python ni con la informática. Libros, películas, juegos, comidas, deportes, ... ¡Cuéntanos! - *Después de terminar la tertulia, nos quedamos y seguimos charlando de cosas muy interesantes que no son grabadas/no queremos que se graben, ahí lo dejo.* Un saludo. -- Víctor Ramírez de la Corte @virako ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From pau.cervera en gmail.com Fri May 6 07:13:51 2022 From: pau.cervera en gmail.com (Pau Cervera) Date: Fri, 6 May 2022 13:13:51 +0200 Subject: [Python-es] migraciones con multiples bases de datos en django Message-ID: Buenas, Tengo una duda sobre cómo maneja Django las migraciones con múltiples bases de datos.En mi caso tengo dos DATABASES en el settings DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'producto', }, 'legacy': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'legacy-schema', } } la DB default está manejada por django desde siempre y la legacy tiene modelos generados vía inspecdb en una django application que también se llama legacy. En un principio la BD legacy era de sólo lectura, con lo que tener los modelos con managed = False (cómo los genera inspectdb) ya estaba bien. Con este sistema, y aunque el managed = False, django genera entradas en la tabla django_migrations para legacy (pués está instalada) aunque no genera tablas (el comando sqlmigrate sale con SQL vacío), cosa que está bien porqué están en otra BD. El problema que tengo ahora es que quiero empezar a gestionar los modelos de legacy des de Django. Esto supone cambiar los managed = False por managed = True y a partir de ahí cambiar los modelos. Por ejemplo, añadir una columna a una tabla. A priori esto genera una migración de cambio de metadatos de managed = False a managed = True y después una migración normal que añade la columna al schema. Para gestionar a qué BD pertenecen las tablas tengo un custom database router cómo este: class LegacyRouter: route_app_labels = {'legacy',} legacy_database = 'legacy' def db_for_read(self, model, **hints): if model._meta.app_label in self.route_app_labels: return self.legacy_database return None def db_for_write(self, model, **hints): if model._meta.app_label in self.route_app_labels: return self.legacy_database return None def allow_relation(self, obj1, obj2, **hints): return None def allow_migrate(self, db, app_label, model_name=None, **hints): is_legacy_db = db == self.legacy_database is_legacy_app = app_label in self.route_app_labels if is_legacy_db: return is_legacy_app else: return not is_legacy_app De esta forma, si ejecuto las migraciones con python manage.py migrate se migran las tablas que no son de la BD legacy y no son de la aplicación legacy. Pero además se incluyen migraciones (con SQL vacío) de los modelos de legacy. De la misma forma, si migro los modelos de legacy con python manage.py migrate --database=legacy se migran los modelos de legacy, pero además, se añaden entradas para todas las migraciones de las otras aplicaciones instaladas (sin SQL, con lo que no se crean/modifican tablas que no tocan). En ambos casos, python manage.py showmigrations y python manage.py showmigrations --database=legacy muestran todas las aplicaciones. Creo que esto es comportamiento esperado, pero ¿hay forma de que no salgan los modelos en las bases de datos que no los necesitan? ¿Estoy haciendo algo mal? ¡Muchas gracias! ----- Pau Python..., what else? ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From euribates en gmail.com Mon May 9 07:37:01 2022 From: euribates en gmail.com (Juan Ignacio) Date: Mon, 9 May 2022 12:37:01 +0100 Subject: [Python-es] migraciones con multiples bases de datos en django In-Reply-To: References: Message-ID: Tengo el mismo problema y, por lo que he podido ver, no hay forma facil de resolverlo. Yo por el momento tengo una receta en un Makefile para migrar, donde especifico para cada app, la base de datos a usar. Los routers no se usan, como tu dices, en estos casos. Ademas, por lo que vi en su dia, los de Django insisten en que esta es la manera correcta y no tienen planes de cambiarlo. On Fri, 6 May 2022 at 12:14, Pau Cervera wrote: > Buenas, > > Tengo una duda sobre cómo maneja Django las migraciones con múltiples > bases de datos.En mi caso tengo dos DATABASES en el settings > > DATABASES = { > 'default': { > 'ENGINE': 'django.db.backends.mysql', > 'NAME': 'producto', > }, > 'legacy': { > 'ENGINE': 'django.db.backends.mysql', > 'NAME': 'legacy-schema', > } > } > > la DB default está manejada por django desde siempre y la legacy tiene > modelos generados vía inspecdb en una django application que también se > llama legacy. En un principio la BD legacy era de sólo lectura, con lo que > tener los modelos con managed = False (cómo los genera inspectdb) ya estaba > bien. > > Con este sistema, y aunque el managed = False, django genera entradas en > la tabla django_migrations para legacy (pués está instalada) aunque no > genera tablas (el comando sqlmigrate sale con SQL vacío), cosa que está > bien porqué están en otra BD. > > El problema que tengo ahora es que quiero empezar a gestionar los modelos > de legacy des de Django. Esto supone cambiar los managed = False por > managed = True y a partir de ahí cambiar los modelos. Por ejemplo, añadir > una columna a una tabla. > > A priori esto genera una migración de cambio de metadatos de managed = > False a managed = True y después una migración normal que añade la columna > al schema. > > Para gestionar a qué BD pertenecen las tablas tengo un custom database > router cómo este: > > class LegacyRouter: > route_app_labels = {'legacy',} > legacy_database = 'legacy' > > def db_for_read(self, model, **hints): > if model._meta.app_label in self.route_app_labels: > return self.legacy_database > return None > > def db_for_write(self, model, **hints): > if model._meta.app_label in self.route_app_labels: > return self.legacy_database > return None > > def allow_relation(self, obj1, obj2, **hints): > return None > > def allow_migrate(self, db, app_label, model_name=None, **hints): > is_legacy_db = db == self.legacy_database > is_legacy_app = app_label in self.route_app_labels > if is_legacy_db: > return is_legacy_app > else: > return not is_legacy_app > > De esta forma, si ejecuto las migraciones con > > python manage.py migrate > > se migran las tablas que no son de la BD legacy y no son de la aplicación > legacy. Pero además se incluyen migraciones (con SQL vacío) de los modelos > de legacy. > > De la misma forma, si migro los modelos de legacy con > > python manage.py migrate --database=legacy > > se migran los modelos de legacy, pero además, se añaden entradas para > todas las migraciones de las otras aplicaciones instaladas (sin SQL, con lo > que no se crean/modifican tablas que no tocan). > > En ambos casos, python manage.py showmigrations y python manage.py > showmigrations --database=legacy muestran todas las aplicaciones. > > Creo que esto es comportamiento esperado, pero ¿hay forma de que no salgan > los modelos en las bases de datos que no los necesitan? ¿Estoy haciendo > algo mal? > > ¡Muchas gracias! > > ----- > Pau > > Python..., what else? > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Juan Ignacio Rodríguez de León Móvil (Spain): 605 890514 (Add +34 for International calls) Mobile (UK): 07898648972 (Replace first 0 with +44 for International calls) E-Mail: euribates en gmail.com http://www.pythoncanarias.es/ ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From virako.9 en gmail.com Mon May 9 08:37:32 2022 From: virako.9 en gmail.com (Victor Ramirez) Date: Mon, 9 May 2022 14:37:32 +0200 Subject: [Python-es] =?utf-8?q?Tertulia_python=2E_Martes_10_de_Mayo_a_las?= =?utf-8?q?_21=3A30_CET_=28Horario_de_Espa=C3=B1a=29=2E?= Message-ID: Hola, Se convoca la Tertulia de la semana: ¿Cuándo? *Martes 10 de Mayo* a las *21:30 CET (Horario de España).* ¿Dónde? https://meet.jit.si/py2022 Accesible desde cualquier navegador moderno y desde aplicación para Android e iOS. La sala estará bloqueada con clave, que se retirará a la hora de comienzo para permitir el acceso público. ¿Por qué? Porque tenemos ganas de hablar sobre python con más gente. Anímate, no se necesitan conocimientos avanzados, solo ganas de charlar y pasar un buen rato. ANUNCIO: Se busca: Se busca alguien con ganas de editar audio, mientras se sigue publicando el excelente trabajo que realizó Pablo en https://podcast.jcea.es/python/ Se recompensa con mucha satisfacción pero sin dinero. Otros detalles: - Se grabará el audio de la conversación con vistas a una difusión pública posterior (tipo podcast). Entendemos que los participantes están de acuerdo en ser grabados (solo audio, no video). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras se recordará al empezar. - Se agradece entrar con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero se agradece. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruido ambiente. Procura usar auriculares para evitar el retorno. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. Sería interesante que trajeras algo pensado. ¡Trae tu tema! - Al final de la tertulia, recomendamos algo que no tiene porqué estar relacionado con python ni con la informática. Libros, películas, juegos, comidas, deportes, ... ¡Cuéntanos! - *Después de terminar la tertulia, nos quedamos y seguimos charlando de cosas muy interesantes que no son grabadas/no queremos que se graben, ahí lo dejo.* Un saludo. -- Víctor Ramírez de la Corte @virako ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From horacio9573 en gmail.com Fri May 13 08:25:09 2022 From: horacio9573 en gmail.com (Horacio) Date: Fri, 13 May 2022 09:25:09 -0300 Subject: [Python-es] =?utf-8?q?Plantillas_de_c=C3=B3digo_en_tkinter?= Message-ID: Buenas, perdón por la pregunta,,, pero es que existe algún repositorio con plantillas de código de front-end en tkinter, donde se alojen botoneras y frames para colocar gráficos matplot? Saludos y gracias From virako.9 en gmail.com Mon May 16 06:22:27 2022 From: virako.9 en gmail.com (Victor Ramirez) Date: Mon, 16 May 2022 12:22:27 +0200 Subject: [Python-es] =?utf-8?q?Tertulia_python=2E_Martes_17_de_Mayo_a_las?= =?utf-8?q?_21=3A30_CET_=28Horario_de_Espa=C3=B1a=29=2E?= Message-ID: Hola, Se convoca la Tertulia de la semana: ¿Cuándo? *Martes 17 de Mayo* a las *21:30 CET (Horario de España).* ¿Dónde? https://meet.jit.si/py2022 Accesible desde cualquier navegador moderno y desde aplicación para Android e iOS. La sala estará bloqueada con clave, que se retirará a la hora de comienzo para permitir el acceso público. ¿Por qué? Porque tenemos ganas de hablar sobre python con más gente. Anímate, no se necesitan conocimientos avanzados, solo ganas de charlar y pasar un buen rato. ANUNCIO: Se busca: Se busca alguien con ganas de editar audio, mientras se sigue publicando el excelente trabajo que realizó Pablo en https://podcast.jcea.es/python/ Se recompensa con mucha satisfacción pero sin dinero. Otros detalles: - Se grabará el audio de la conversación con vistas a una difusión pública posterior (tipo podcast). Entendemos que los participantes están de acuerdo en ser grabados (solo audio, no video). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras se recordará al empezar. - Se agradece entrar con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero se agradece. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruido ambiente. Procura usar auriculares para evitar el retorno. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. Sería interesante que trajeras algo pensado. ¡Trae tu tema! - Al final de la tertulia, recomendamos algo que no tiene porqué estar relacionado con python ni con la informática. Libros, películas, juegos, comidas, deportes, ... ¡Cuéntanos! - *Después de terminar la tertulia, nos quedamos y seguimos charlando de cosas muy interesantes que no son grabadas/no queremos que se graben, ahí lo dejo.* Un saludo. -- Víctor Ramírez de la Corte @virako ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From virako.9 en gmail.com Mon May 23 05:54:02 2022 From: virako.9 en gmail.com (Victor Ramirez) Date: Mon, 23 May 2022 11:54:02 +0200 Subject: [Python-es] =?utf-8?q?Tertulia_python=2E_CAMBIO_DE_HORA=2E_Marte?= =?utf-8?q?s_24_de_mayo_a_las_22=3A00_CET_=28Horario_de_Espa=C3=B1a?= =?utf-8?b?KS4=?= Message-ID: Hola, Se convoca la Tertulia de la semana: ¿Cuándo? *CAMBIO DE HORA. Martes 24 de mayo* a las *22:00 CET (Horario de España).* ¿Dónde? https://meet.jit.si/py2022 Accesible desde cualquier navegador moderno y desde aplicación para Android e iOS. La sala estará bloqueada con clave, que se retirará a la hora de comienzo para permitir el acceso público. ¿Por qué? Porque tenemos ganas de hablar sobre python con más gente. Anímate, no se necesitan conocimientos avanzados, solo ganas de charlar y pasar un buen rato. ANUNCIO: Se busca: Se busca alguien con ganas de editar audio, mientras se sigue publicando el excelente trabajo que realizó Pablo en https://podcast.jcea.es/python/ Se recompensa con mucha satisfacción pero sin dinero. Otros detalles: - Se grabará el audio de la conversación con vistas a una difusión pública posterior (tipo podcast). Entendemos que los participantes están de acuerdo en ser grabados (solo audio, no video). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras se recordará al empezar. - Se agradece entrar con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero se agradece. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruido ambiente. Procura usar auriculares para evitar el retorno. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. Sería interesante que trajeras algo pensado. ¡Trae tu tema! - Al final de la tertulia, recomendamos algo que no tiene porqué estar relacionado con python ni con la informática. Libros, películas, juegos, comidas, deportes, ... ¡Cuéntanos! - *Después de terminar la tertulia, nos quedamos y seguimos charlando de cosas muy interesantes que no son grabadas/no queremos que se graben, ahí lo dejo.* Un saludo. -- Víctor Ramírez de la Corte @virako ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From virako.9 en gmail.com Mon May 30 05:56:14 2022 From: virako.9 en gmail.com (Victor Ramirez) Date: Mon, 30 May 2022 11:56:14 +0200 Subject: [Python-es] Tertulia python. Martes 31 de Mayo a las 22:00 CEST Message-ID: Hola, Se convoca la Tertulia de la semana: ¿Cuándo? *Martes 31 de Mayo* a las *22:00 CEST* ¿Dónde? https://meet.jit.si/py2022 Accesible desde cualquier navegador moderno y desde aplicación para Android e iOS. La sala estará bloqueada con clave, que se retirará a la hora de comienzo para permitir el acceso público. ¿Por qué? Porque tenemos ganas de hablar sobre python con más gente. Anímate, no se necesitan conocimientos avanzados, solo ganas de charlar y pasar un buen rato. ANUNCIO: Se busca: Se busca alguien con ganas de editar audio, mientras se sigue publicando el excelente trabajo que realizó Pablo en https://podcast.jcea.es/python/ Se recompensa con mucha satisfacción pero sin dinero. Otros detalles: - Se grabará el audio de la conversación con vistas a una difusión pública posterior (tipo podcast). Entendemos que los participantes están de acuerdo en ser grabados (solo audio, no video). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras se recordará al empezar. - Se agradece entrar con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero se agradece. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruido ambiente. Procura usar auriculares para evitar el retorno. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. Sería interesante que trajeras algo pensado. ¡Trae tu tema! - Al final de la tertulia, recomendamos algo que no tiene porqué estar relacionado con python ni con la informática. Libros, películas, juegos, comidas, deportes, ... ¡Cuéntanos! - *Después de terminar la tertulia, nos quedamos y seguimos charlando de cosas muy interesantes que no son grabadas/no queremos que se graben, ahí lo dejo.* Un saludo. -- Víctor Ramírez de la Corte @virako ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: