我被逼疯了,试图弄清楚这一点。我第一次使用 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)
不幸的是,这对我也不起作用!如果我用 1 之类的数字替换第二个参数......它仍然不起作用。令人沮丧。