python中的mysql.connector/for-loop中的cursor仅适用于表的第一行

icomxhvb  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(34)

我有一个表,我想翻译一行的“topic”和“review”列,并将整个表及其翻译存储到一个新表中。似乎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()

字符串

bvuwiixz

bvuwiixz1#

您在for循环内外都使用了变量名“DBcursor”,因此您正在修改变量并丢失resultSet。
例如,如果在外部使用DBcursor1,在内部使用DBcursor2,它应该可以工作。

相关问题