【问题标题】:Updating database not working ; Python 3.4, SQL Azure DB更新数据库不起作用; Python 3.4、SQL Azure 数据库
【发布时间】:2016-12-04 07:34:21
【问题描述】:

我有一个数据库表,其中包括最终用户 cmets(评论列)和情绪得分(情绪列)。我正在 cmets 列上使用 texblob 运行情绪分析。

默认情况下,情绪列预先填充了情绪分数 0(浮点数据类型)。

我在根据情绪分析结果更新情绪分数时遇到问题。预填充的值 0 保留在表格列中,因此更新不起作用。

各种组件似乎都可以工作(没有抛出错误,打印语句输出正确的情绪分数,应该在每个循环中更新情绪列,如果我硬编码也可以工作的更新 sql 语句,尽管没有循环遍历行,数据库连接不是问题,因为正在计算情绪......)。

有人可以告诉我我做错了什么吗?编程新手。

干杯史蒂夫

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()

【问题讨论】:

    标签: python sql-server azure


    【解决方案1】:

    问题在于 UPDATE 语句。它需要包含一个 WHERE 来指定需要根据 FOR 循环的特定迭代更新的确切行。例如

       SQLUPDATECommand =("Update [ADO NET Destination] SET [Sentiment] = ? WHERE RowID = ?") 
    value = [wiki.polarity, row[1]]
    

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2015-05-29
      • 2012-04-28
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多