2016-12-04 7 views
0

エンドユーザーのコメント(コメント列)とセンチメントスコア(センチメント列)を含むデータベーステーブルがあります。私はコメント欄にtexblobを使って感情分析を行っています。データベースが更新されていません。 Python 3.4、SQL Azure DB

デフォルトでは、Sentiment列にはセンチメントスコア0(floatデータ型)があらかじめ設定されています。

感情分析の結果に基づいて感情スコアを更新する際に問題が発生しています。事前に設定された0の値はテーブルの列に残ります。そのため、更新は機能しません。

さまざまなコンポーネントが動作するように見えます(エラーはスローされません。printステートメントは、各ループでSentimentカラムを更新する正しい感情スコアを出力します)。また、更新SQLステートメントをハードコードすると、感情が計算されているのでDB接続は問題ではありません...)。

私が間違っていることをアドバイスできますか?プログラミングの初心者です。

乾杯スティーブ

import pypyodbc 
from textblob import TextBlob 

myConnection = pypyodbc.connect('Driver={SQL Server};' 
           'Server=tcp:AZURESERVER;' 
           'Database=DBNAME;' 
           'uid=USERNAME; pwd=PASSWORD') 
myCursor = myConnection.cursor() 
SQLCommand =("SELECT Comments FROM [dbo].[ADO NET Destination] ") 
myCursor.execute(SQLCommand) 

for row in myCursor.fetchall(): 
    print(row) 
    wiki = TextBlob(str(row)) 
    print(wiki.polarity) 
    print(type(wiki.polarity)) 
    SQLUPDATECommand =("Update [ADO NET Destination] SET [Sentiment] = ?") 
    value = [wiki.polarity] 
    myCursor.execute(SQLUPDATECommand,value) 
    myConnection.commit() 
myConnection.close() 

enter image description here

答えて

0

問題は、UPDATE文でいました。 FORループの特定の反復に基づいて更新が必要な正確な行を指定するには、WHEREを含める必要がありました。例えば。

SQLUPDATECommand =("Update [ADO NET Destination] SET [Sentiment] = ? WHERE RowID = ?") 
value = [wiki.polarity, row[1]] 
関連する問題