2014-04-21 61 views
0

我有以下代碼在我從本地主機運行時運行正常,但是當我從Amazon運行它時失敗。代碼沒有區別,它使用相同的數據庫連接。無法在Amazon上使用dictCursor獲取數據

我用pymysql,我用dictCursor來按列名取數據。這是我如何創建鏈接:

self.link = self.db.cursor(pymysql.cursors.DictCursor) 

我的問題是當我試圖獲取數據。以下簡單代碼段失敗:

try: 
    self.link.execute('SELECT * FROM crawler_data WHERE id="%d" LIMIT 1' % id_crawl); 
    row = self.link.fetchone() 

except pymysql.err.Error as ex: 
    print "Can not fetch crawler data from database: %s" % ex 

print "Before" 

try: 
    if row["address"]: 
     print "Filter Address: %s" % row["address"] 
except Exception as ex: 
    print "Could not filter the data: %s" % ex.message 

print "After" 

它甚至不會打印「過濾器地址」。我想這意味着它在if row["address"]:上失敗。它確實打印「之前」和「之後」。

我也試過row[u"address"]:沒有任何成功。當我打印row。我得到以下數據印刷: {u'address': u'Ekhammargr\\xe4nd 7'}

所以問題:

  1. 我除了完成,並打印「無法篩選數據:」。它不打印ex.message。如何獲取導致try失敗的異常或錯誤?
  2. 我使用相同的代碼和相同的數據庫連接,獲取相同的數據。它在我的本地主機Windows機器上正常工作,但不在我的Amazon Web Services Elastic Beanstalk Linux應用程序上運行。這怎麼可能?

編輯: 我試圖改變if語句:

if True: 
    print "Filter Address" 

它仍然未能在亞馬遜。如果是縮進錯誤,它不應該在localhost上工作......任何想法?

下面是完整的功能:http://pastebin.com/haJGFuj3

回答

0

對於一些未知的原因,當我重寫了代碼完全一樣,它開始工作。我只使用製表符作爲縮進和沒有空格,我tripple檢查,我沒有得到任何縮進錯誤。所以我不確定可能會導致這些問題。

但是當我從頭開始重寫代碼時,使用相同的代碼。有效。

編輯:我使用Sublime Text 2作爲編輯器和utf8作爲編碼。