【问题标题】:INSERT within Loop isn't working as I would expect (Python 2.7)循环内的 INSERT 无法正常工作(Python 2.7)
【发布时间】:2017-11-26 14:55:59
【问题描述】:

我正在对一个包含 3 条记录的表进行情绪分析(图 1)。当我将结果打印到屏幕(图 3)时,我的代码(图 2)似乎工作正常。对于 3 行中的每一行,我返回 3 个值 - 行 ID、情绪分数和幅度分数。 (9 个结果):

但是,当我尝试将相同的 9 个值插入到表中时(图 4),只有 3 个值(来自第一行)被插入到我的表中。

我觉得这很明显,但我对问题所在感到困惑。谁能指出是什么阻止了 Insert 在循环的所有 3 次迭代中工作。

编码新手。

图 1。

图 2。

import mysql.connector
from google.cloud import language
cnx = mysql.connector.connect(user='Blah', password='Blah',
                          host='Blah',
                          database='Blah')

cursor = cnx.cursor(buffered=True)

Latest = ("SELECT ResID, TextResp FROM Response")

client = language.Client()

cursor.execute(Latest)
for row in cursor:
    document = client.document_from_text(row[1])
    sent_analysis = document.analyze_sentiment()
    sentiment = sent_analysis.sentiment
    annotations = document.annotate_text(include_sentiment=True, include_syntax=True, include_entities=True)
    ResID_ =row[0]
    PhraseSent_ = sentiment.score
    PhraseMag_ = sentiment.magnitude

    print(ResID_)
    print(PhraseSent_)
    print(PhraseMag_)

cnx.commit()
cursor.close()
cnx.close()

图 3。

图 4. 带有未按预期工作的 INSERT 语句的循环

【问题讨论】:

  • 你得到什么错误?
  • 没有错误 - INSERT 有效,但只有前 3 个值(1、-0.4、2.2)被插入到表中(因此是循环的第一次迭代)。我希望(并且期望)插入图 3 中的所有 9 个值。
  • Ih 图 3 您只得到 3 个值,但它们每一个都使用 3 行。你得到值 (1,-0.4,2.2), (2,-0.6,2.4) y (3,0.1,2.4)。哟不要得到 9 行,只有 3 行。
  • PhraseAnalysis 完成后会是什么样子?
  • @AndrewBone 只是数值 - 这是插入到表中的内容 (imgur.com/2MIXYMu)。所以只有图 3 中的前 3 个值。所以第一个值是 ResID_,在这种情况下是原始表中的行 ID,第二个值 (PhraseSent_) 是情绪(评论的积极程度,范围从 -1到 1),最终值是幅度 (PhraseMag_),即情绪的“强烈”程度。关键问题是“为什么没有将图 3 中的所有 9 个值都插入到表中?而不仅仅是 3 个”。

标签: python mysql loops insert


【解决方案1】:

问题是被迭代的游标只保存了表中的第一行,而不是所有 3 行。改变

光标所在行:

对于 cursor.fetchall() 中的行:

解决了问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    相关资源
    最近更新 更多