【发布时间】:2016-03-24 15:54:08
【问题描述】:
我正在努力从 SQL Server 2008 R2 表中提取客户服务工单的措辞(“Note”),然后运行情绪分析并使用该分析来更新同一个表中的“Sentiment”字段。以下是有关表格字段的更多信息:
TicketNoteID(PK, int, not null)
TicketID (FK, int, not null)
UserName (varchar(20), not null)
Note (varchar(max), not null)
Author (varchar(50), not null)
isExternal (bit, null)
DateTimeCreated (datetime, not null)
NoteID (int, null)
DateTimeUploaded (datetime, null)
Error (bit, null)
ErrorMessage (varchar(max), null)
Sentiment (float, null)
当我运行下面的代码时,我得到了这个错误:
pyodbc.ProgrammingError:没有结果。以前的 SQL 不是查询。
我已经根据其他关于同一错误的帖子对我的代码进行了建模,但我找不到任何可以解决问题的方法。代码如下:
import pyodbc
from textblob import TextBlob
cnxn = pyodbc.connect(r'DRIVER={SQL Server Native Client 11.0};SERVER=...')
cur = cnxn.cursor()
sql = """
SELECT Note
FROM dbo.DSDTicketNotes
where Sentiment is NULL
"""
rows = cur.execute(sql)
for row in rows:
note = cur.fetchone()
row = str(note)
blob = TextBlob(row)
sent = blob.sentiment.polarity
sentUpdate = cur.execute("UPDATE dbo.DSDTicketNotes SET Sentiment = ?", sent)
cur.close()
cnxn.close()
感谢您的帮助!
【问题讨论】:
-
UPDATE语句看起来需要WHERE子句,否则每次迭代都会更新所有行。
标签: python sql-server tsql pyodbc