无法在亚马逊上使用dictCursor获取数据

时间:2014-04-21 07:30:13

标签: python amazon-web-services elastic-beanstalk

我有以下代码,当我从本地主机运行时,它可以正常工作,但是当我从亚马逊运行它时它失败了。代码没有区别,它使用相同的数据库连接。

我使用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. 我使用相同的代码和相同的数据库连接,获取相同的数据。它在我的localhost Windows机器上运行正常,但在我的Amazon Web Services Elastic Beanstalk Linux应用程序上运行不正常。怎么会这样?
  3. 修改 我尝试将if语句更改为:

    if True:
        print "Filter Address"
    

    在亚马逊上仍然失败了。如果是缩进错误,它应该不能在localhost上工作......任何想法?

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

1 个答案:

答案 0 :(得分:0)

由于某些未知原因,当我重写代码完全相同时,它开始工作。我只使用制表符作为缩进而没有空格,我检查并且我没有得到任何缩进错误。所以我不确定是什么原因导致这些问题。

但是当我从头开始重写代码时,使用相同的代码。它奏效了。

编辑:我使用Sublime Text 2作为编辑器,使用utf8作为编码。