2016-02-19 4 views
2

В настоящее время я работаю над проектом, который использует Tweets и проводит быстрый анализ настроений и загружает идентификатор твита, дату твита, текст твита и настроение твита полярности в таблицу доступа MS (Office 2013). Я преобразовал выходы в строки, за исключением полярности настроения, чтобы соответствовать типам данных таблицы (Test). Вот мой код:Ошибка ввода PYODBC MS Access - слишком мало параметров

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

Я видел другие сообщения на этой ошибке, но большинство из них только что из-за проблемы с двойными кавычками в Доступ. Поскольку я использовал только одинарные кавычки и все еще получаю эту проблему, я в тупике. Это сводит меня с ума! Любая помощь будет принята с благодарностью!

ответ

3

Ваш оператор SQL включает в себя идентификаторы Ident, TweetDate и т. Д., Как буквальный текст, а механизм базы данных доступа рассматривает их как заполнители параметров. Что вам нужно сделать, это создать актуальных заполнитель параметров в тексте команды, а затем передать параметр значения. Например:

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

Это отлично работало с Гордом! Спасибо! – swaters

Смежные вопросы