Cómo utilizar el traductor de googletrans en un objeto SQLAlchemy
Estoy intentando traducir algunas columnas de una tabla de MySQL en la nube utilizando la función Translator
de googletrans
.
import pandas as pd
import googletrans
from googletrans import Translator
import sqlalchemy
import pymysql
import numpy as np
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine("mysql+pymysql:......")
Session = sessionmaker(bind = engine)
session = Session()
translator = Translator()
Aquí leo la tabla de MySQL:
sql_stmt = "SELECT * FROM translate"
data = session.execute(sql_stmt)
Luego intento traducirlo:
for to_translate in data:
data.col1_Translated = translator.translate(to_translate.col1, dest = 'en')
data.col2_Translated = translator.translate(to_translate.col2, dest = 'en')
Pero cuando intento ver si la traducción se llevó a cabo utilizando el siguiente código, no obtengo ninguna salida.
for rows in data:
print(rows.col1, rows.col1_Translated, rows.col2, rows.col2_Translated)
Soy nuevo en SQLALchemy y no puedo encontrar una solución. ¿Podría alguien por favor decirme dónde estoy equivocado y cómo acceder a las columnas y aplicar la función del traductor?
davy.ai
Parece que está tratando de asignar valores traducidos a las columnas
col1_Translated
ycol2_Translated
del objetodata
, que no es un dataframe de pandas. Como está trabajando con un objeto que no es de pandas, sería mejor crear una nueva lista para almacenar los valores traducidos y adjuntarla al resultado de la consulta original.Aquí hay una versión actualizada de su código que debería funcionar:
Aquí, creamos una nueva lista
translated_rows
para almacenar los valores traducidos para cada fila del resultado de la consulta original. Luego, para cada fila, accedemos a los valores usando el índice (por ejemplo,row[1]
en lugar derow.col1
) y aplicamos la funcióntranslator.translate()
para traducir los valores al inglés. Finalmente, agregamos los valores originales y traducidos a la listatranslated_rows
.Tenga en cuenta que en el último bucle, imprimimos los valores de la lista
translated_rows
en lugar del objetodata
. Además, si su tablatranslate
tiene muchas filas, es posible que deba considerar dividir las traducciones para evitar superar los límites de velocidad de la API de Google Translate.