„Opcjonalna funkcja nie została zaimplementowana (106) (SQLBindParameter)” w pyodbc

Jestem doprowadzany do szału, próbując to zrozumieć. Używam Pythona po raz pierwszy i próbuję zapisać dane zebrane z twittera do bazy danych Access 2010.

Polecenie, którego używam, to:

cursor.execute('''insert into core_data(screen_name,retweet_count) values (?,?,)''', (sname,int(rcount)))

Zwracany komunikat o błędzie:

Traceback (most recent call last):  File "C:/Documents and Settings/Administrator/PycharmProjects/clientgauge/tw_scraper.py", line 44, in <module>
cursor.execute('''insert into core_data(screen_name,retweet_count) values (?,?,)''', (sname,int(rcount))) 
pyodbc.Error: ('HYC00', '[HYC00] [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented  (106) (SQLBindParameter)')

Próbowałem różnych permutacji przekazywania danych do db. Jeśli usunę wpis int (rcount), opublikuje on pierwszą wartość, sname, bez żadnych problemów. Gdy tylko spróbuję przekazać więcej niż jeden parametr, to właśnie wtedy zaczynają się problemy.

Mam przeczucie, że tęsknię za czymś naprawdę podstawowym, ale nie mogę znaleźć żadnych przykładów tego, które mają podobny wygląd do tego, co próbuję zrobić, a to, co próbuję, NIE jest trudne ... użytkownik Prawdopodobnie błąd :)

Każda pomoc byłaby bardzo mile widziana.

Pozdrawiam, Kev

Pełny kod to:

from twython import Twython
import pyodbc
ACCESS_DATABASE_FILE = 'C:\\data\\ClientGauge.accdb'
ODBC_CONN_STR = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;' %ACCESS_DATABASE_FILE
cnxn = pyodbc.connect(ODBC_CONN_STR, autocommit=True)
cursor = cnxn.cursor()
APP_KEY = '<removed>'
APP_SECRET = '<removed>'
# Authenticate on twitter using keys above
t = Twython(APP_KEY, APP_SECRET, oauth_version=2)
# Obtain new access token for this session
ACCESS_TOKEN = t.obtain_access_token()
# Authenticate using new access token
t = Twython(APP_KEY, access_token=ACCESS_TOKEN)
# Carry out search
search = t.search(q='<removed>', #**supply whatever query you want here**
         count=1, result_type='recent')
tweets = search['statuses']
for tweet in tweets:
sname=tweet['user']['screen_name']
rcount=int(tweet['retweet_count'])
fcount=tweet['favorite_count']
coord=tweet['coordinates']
tzone=tweet['user']['time_zone']
cdate=tweet['created_at']
htags=tweet['entities']['hashtags']
sql = "insert into core_data(screen_name,retweet_count,favourited_count) values (?,?,?)", (str(sname),rcount,fcount)
print(sql)
cursor.execute('''insert into core_data(screen_name,retweet_count) values (?,?)''', (sname,rcount))
cursor.commit()
cnxn.close()

Używam MS Access 2010, pyodbc-3.0.7.win32-py3.3.exe, Python 3.3 i PyCharm.

Nie oceniaj moich umiejętności kodowania :) Python jest dla mnie nowy. Będziesz mógł zobaczyć, że próbowałem ustawić instrukcję INSERT jako łańcuch początkowo (sql), a ja wywołałem kursor używając:

cursor.execute(sql)

Niestety to też nie zadziałało! Jeśli zastąpię drugi parametr liczbą taką jak 1 ... to nadal nie działa. Denerwujący.

questionAnswers(2)

yourAnswerToTheQuestion