python - PYODBC MS Access 插入错误 - 参数太少

标签 python twitter ms-access-2013 pyodbc

我目前正在开发一个项目,该项目采用推文进行快速情绪分析,并将推文 ID、推文日期、推文文本以及推文的情绪极性加载到 MS Access 表 (Office 2013 )。我已将输出转换为字符串,但情绪极性除外以匹配表(测试)数据类型。这是我的代码:

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 语句包含标识符 IdentTweetDate 等作为文字文本,并且 Access 数据库引擎将它们视为参数占位符。您需要做的是在命令文本中创建实际参数占位符,然后传递参数。例如:

sql = """\
INSERT INTO [Test] ([Ident], [TweetDate], [TweetText], [TweetSentiment]) 
VALUES (?,?,?,?)
"""
params = (Ident, TweetDate, TweetText, sent)
cursor.execute(sql, params)
cnxn.commit()

关于python - PYODBC MS Access 插入错误 - 参数太少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35506690/

相关文章:

Python Selenium 使用 OR 运算符通过 xpath 查找元素

sql - 即使没有匹配,访问 VBA 在分组中返回 0

delphi - While 循环从查询中遍历记录集时出现问题

php - 在 CodeIgniter 中实现 Twitter 登录

mysql - 如何在 VBA 代码中获取 mysql 存储函数结果

python - Django:基于类的 View 访问 URL 变量

python - 追加到 python dict 中的数组会追加到所有数组

python - 用 U+FFFD 替换给定字符集之外的字符?

twitter - 指向 Twitter 用户的 URL 链接(包含 ID,而不是姓名)

java - 使用 twitter4j 和 java 获取所有用户时间线推文