python 中的 mysql.connector / for 循环中的游标仅适用于表的第一行

问题描述 投票:0回答:1

我有一个表,我想翻译一行的“主题”和“评论”列,并将整个表及其翻译存储到一个新表中。 for 循环似乎并未迭代输入表的所有行。仅第一行存储到新表中。为什么?

database = mysql.connector.connect(user='root', password='root', host='localhost', database='test')

DBcursor = database.cursor(buffered=True)

query = ("SELECT * FROM test_de")

DBcursor.execute(query)


for (id, user_name, date, country, version, score, topic, review, url) in DBcursor:

    topic_trans = translate(topic, 'en')
    review_trans = translate(review, 'en')

    add_translation = ("INSERT INTO test_de_en(id, user_name, date, country, version, score, topic, review, url)"

                            "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)")

    translation_data = (id, user_name, date, country, version, score, topic_trans, review_trans, url)

    DBcursor.execute(add_translation, translation_data)

    database.commit()


DBcursor.close()

database.close()
python mysql for-loop cursor mysql-connector
1个回答
0
投票

您在 for 循环内部和外部都使用了变量名称“DBcursor”,因此您将覆盖变量并丢失结果集。

例如,如果您在外部使用 DBcursor1,在内部使用 DBcursor2,那么它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.