【发布时间】: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 个”。