PYODBC MS Access 插入错误 - 参数太少
PYODBC MS Access Insert Error - Too Few Parameters
我目前正在开展一个项目,该项目采用推文并进行快速情绪分析,并将推文 ID、推文日期、推文文本和推文的情绪极性加载到 MS Access Table(Office 2013)。我已将输出转换为字符串,但情感极性除外以匹配 table(测试)数据类型。这是我的代码:
from pattern.web import Twitter
import time
import pyodbc
from textblob import TextBlob
cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:...SentimentAnalysis.accdb;')
cursor = cnxn.cursor()
s = Twitter().stream('#testhash')
for i in range(25):
time.sleep(1)
s.update(bytes=1024)
if s:
Ident = str(s[-1].id)
TweetDate = str(s[-1].date)
TweetText = str(s[-1].text.encode('utf8'))
x = s[-1].text
blob = TextBlob(x)
sent = blob.sentiment.polarity
cursor.execute('insert into Test([Ident],[TweetDate],[TweetText],[TweetSentiment]) values (Ident,TweetDate,TweetText,sent);')
cnxn.commit()
print 'Inserted: ', Ident
else: ''
s.clear()
问题是我收到以下错误:
pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access
Driver] Too few parameters. Expected 4. (-3010) (SQLExecDirectW)')
我看过关于此错误的其他帖子,但大多数只是由于 Access 中的双引号问题所致。由于我只使用了单引号但仍然遇到问题,所以我很困惑。这让我抓狂!任何帮助将不胜感激!
您的 SQL 语句包括标识符 Ident
、TweetDate
等,作为文字文本,Access 数据库引擎将它们视为参数占位符。您需要做的是在命令文本中创建 actual 参数占位符,然后传递参数 values。例如:
sql = """\
INSERT INTO [Test] ([Ident], [TweetDate], [TweetText], [TweetSentiment])
VALUES (?,?,?,?)
"""
params = (Ident, TweetDate, TweetText, sent)
cursor.execute(sql, params)
cnxn.commit()
我目前正在开展一个项目,该项目采用推文并进行快速情绪分析,并将推文 ID、推文日期、推文文本和推文的情绪极性加载到 MS Access Table(Office 2013)。我已将输出转换为字符串,但情感极性除外以匹配 table(测试)数据类型。这是我的代码:
from pattern.web import Twitter
import time
import pyodbc
from textblob import TextBlob
cnxn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:...SentimentAnalysis.accdb;')
cursor = cnxn.cursor()
s = Twitter().stream('#testhash')
for i in range(25):
time.sleep(1)
s.update(bytes=1024)
if s:
Ident = str(s[-1].id)
TweetDate = str(s[-1].date)
TweetText = str(s[-1].text.encode('utf8'))
x = s[-1].text
blob = TextBlob(x)
sent = blob.sentiment.polarity
cursor.execute('insert into Test([Ident],[TweetDate],[TweetText],[TweetSentiment]) values (Ident,TweetDate,TweetText,sent);')
cnxn.commit()
print 'Inserted: ', Ident
else: ''
s.clear()
问题是我收到以下错误:
pyodbc.Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 4. (-3010) (SQLExecDirectW)')
我看过关于此错误的其他帖子,但大多数只是由于 Access 中的双引号问题所致。由于我只使用了单引号但仍然遇到问题,所以我很困惑。这让我抓狂!任何帮助将不胜感激!
您的 SQL 语句包括标识符 Ident
、TweetDate
等,作为文字文本,Access 数据库引擎将它们视为参数占位符。您需要做的是在命令文本中创建 actual 参数占位符,然后传递参数 values。例如:
sql = """\
INSERT INTO [Test] ([Ident], [TweetDate], [TweetText], [TweetSentiment])
VALUES (?,?,?,?)
"""
params = (Ident, TweetDate, TweetText, sent)
cursor.execute(sql, params)
cnxn.commit()