You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQLAlchemy对象上使用googletrans的Translator翻译MySQL表字段

问题原因

  • session.execute() 返回的是 Result 可迭代对象,仅支持一次遍历,第一次循环执行翻译操作时已经把迭代器完全消耗,第二次循环打印时游标已经走到末尾,自然没有任何输出
  • 你直接对 data 整体新增 col1_Translated、col2_Translated 属性,没有将翻译结果绑定到对应行数据上,就算能完成第二次遍历也无法获取每行对应的翻译结果
  • googletrans 的 translate() 方法返回的是结构化翻译对象,需要取 .text 属性才能拿到实际的翻译文本内容

正确实现方案

方案1:转成列表存储处理后的数据

# 读取数据时直接转为列表,避免迭代器耗尽问题
sql_stmt = "SELECT * FROM translate"
data = session.execute(sql_stmt).all()

translated_result = []
for to_translate in data:
    # 转成字典方便扩展字段
    row = dict(to_translate._mapping)
    # 翻译后取文本内容存入字典
    row['col1_Translated'] = translator.translate(row['col1'], dest='en').text
    row['col2_Translated'] = translator.translate(row['col2'], dest='en').text
    translated_result.append(row)

# 验证翻译结果
for row in translated_result:
    print(row['col1'], row['col1_Translated'], row['col2'], row['col2_Translated'])

方案2:结合Pandas处理更简便

import pandas as pd

# 直接从SQL读取数据到DataFrame
df = pd.read_sql("SELECT * FROM translate", engine)

# 批量完成字段翻译
df['col1_Translated'] = df['col1'].apply(lambda x: translator.translate(x, dest='en').text)
df['col2_Translated'] = df['col2'].apply(lambda x: translator.translate(x, dest='en').text)

# 验证结果
print(df[['col1', 'col1_Translated', 'col2', 'col2_Translated']])

内容的提问来源于stack exchange,提问作者Karthik S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:06:03