2012-11-27 35 views
2

我對pymongo很陌生。在下面的代碼,'module'對象在pymongo中沒有屬性'OrderedDict'錯誤

db = MySQLdb.connect(DB_HOST,DB_USR,DB_PWD,DB_NAME) 
cursor = db.cursor() 
query = "SELECT * FROM %s WHERE userid = \"%s\"" % (table, userID) 
cursor.execute(query) 
colNames = [i[0] for i in cursor.description] 
rows = cursor.fetchall() 
objects_list = [] 
# The below logic makes JSON objet based on fetch MySQL rows. 
for row in rows: 
    d = collections.OrderedDict() 
    index = 0 
    for col in colNames: 
     d[col] = row[index] 
     index = index + 1 
    objects_list.append(d) 
return objects_list 

,我發現了錯誤,

trngl_advertise_perfm 
trngl_advertise_activity 
trngl_user_fblike 
Traceback (most recent call last): 
File "IngestDataToMongo.py", line 83, in <module> 
userData = getData(user[0], TABLES[i]) # Get data of each user. 
File "IngestDataToMongo.py", line 51, in getData 
d = collections.OrderedDict() 
AttributeError: 'module' object has no attribute 'OrderedDict' 

請告訴我,如何刪除錯誤。

+1

檢查您的Python版本 –

+2

@InbarRose我無法更改我的python版本,因爲代碼位於服務器上運行的腳本中。那麼有沒有像導入文件或其他我可以用來代替OrderedDict的東西的選項。 –

回答

11

您正在使用Python 2.6或更早版本。在版本2.7之前,OrderedDict未被添加到Python。

documentation

新的2.7版。

你可以使用this backport,而不是(也可用PyPI),它會在Python版本2.4及以上,工作或安裝python 2.7和運行在該版本的腳本來代替。

+1

PyPI上還有一個'ordereddict'包,可能包含相同的代碼。 –

+0

@MarkusUnterwaditzer:的確,它鏈接到PyPI頁面上的配方。謝謝,更新了答案。 –

+0

@MartijnPieters謝謝,我真的是新來的python,所以我會嘗試更新我的Python到2.7第一,它似乎比其他選項更簡單 –

相關問題