Cómo realizar cambios en los objetos de SQLAlchemy en la tabla de la base de datos.
Estoy intentando traducir un conjunto de columnas en mi base de datos MySQL utilizando la biblioteca de Python googletrans
.
Tabla de muestra de MySQL:
Etiqueta Respuesta Etiqueta_Traducida Respuesta_Traducida
cómo estás Wie heißen sie? NULO NULO
wie gehts per favore rivisita NULO NULO
元気ですか Cuántos años tienes NULO NULO
Este es mi código de muestra:
import pandas as pd
import googletrans
from googletrans import Translator
import sqlalchemy
import pymysql
import numpy as np
from sqlalchemy import create_engine, MetaData, Table
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql+pymysql:.....')
Session = sessionmaker(bind=engine)
session = Session()
translator = Translator()
Leo la tabla de la base de datos usando:
sql_stmt = "SELECT * FROM traducir"
data = session.execute(sql_stmt)
Realizo las etapas de traducción utilizando:
para traducir en datos:
to_translate.Answer_Translated = translator.translate(to_translate.Answer, dest='en')
to_translate.Label_Translated = translator.translate(to_translate.Label, dest='en')
Intenté session.commit()
, pero los cambios no se reflejan en la base de datos. ¿Podría alguien decirme cómo hacer que los cambios sean permanentes en la base de datos?
También cuando intento:
para filas en datos:
imprimir(filas)
No veo ninguna salida. ¿Hay alguna forma de ver los cambios en Python antes de aplicarlos a la base de datos?
davy.ai
Para hacer que los cambios sean permanentes en la base de datos, necesitas agregar una sentencia
session.commit()
después de completar la traducción para todas las filas. Esto comprometerá los cambios en la base de datos.El código actualizado se verá así:
Para ver los cambios en Python, puedes iterar sobre la variable
data
nuevamente e imprimir las filas. El código actualizado se verá así:Asegúrate de ejecutar este código después de comprometer los cambios en la base de datos, de lo contrario no verás los valores actualizados.