4

私はこれを理解しようとして夢中になっています。初めて Python を使用し、Twitter から収集したデータを Access 2010 データベースに書き込もうとしています。

私が使用しているコマンドは次のとおりです。

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

返されるエラー メッセージは次のとおりです。

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

データをデータベースに渡すさまざまな順列を試しました。int(rcount) エントリを削除すると、問題なく最初の値 sname がポストされます。ただし、複数のパラメーターを渡そうとするとすぐに、問題が発生します。

本当に基本的なものが欠けているような気がしますが、実際に私がやろうとしていることと似たような例を見つけることができず、私がしようとしていることは難しくありません...ユーザーおそらくエラー:)

どんな助けでも大歓迎です。

乾杯、 ケブ

完全なコードは次のとおりです。

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

MS Access 2010、pyodbc-3.0.7.win32-py3.3.exe、Python 3.3、および PyCharm を使用しています。

私のコーディング能力を判断しないでください:) Pythonは私にとって初めてです。最初に INSERT ステートメントを文字列 (sql) として設定しようとしたことがわかります。次を使用してカーソルを呼び出していました。

cursor.execute(sql)

残念ながら、これも私にはうまくいきませんでした!2 番目のパラメーターを 1 などの数値に置き換えても、まだ機能しません。イライラします。

4

4 に答える 4

9

このドライバーと pyodbc で同じエラーが発生しました。整数を浮動小数点数に変換すると問題が解決したことがわかりました。

row = [1, 2, "foo"]
row = [float(x) if type(x) is int else x for x in row] #Convert all int items to floats
cursor.execute("insert into table1 (a,b,c) values (?,?,?)",row).commit()
于 2014-04-03T08:48:40.403 に答える