这似乎是一项非常简单的任务,但我在做正确的事情时遇到了困难.
我的SQL查询看起来像这样:
self.link = self.db.cursor(pymysql.cursors.DictCursor);
self.link.execute("SELECT * FROM crawler_data WHERE id=%d" % id_crawl)
Run Code Online (Sandbox Code Playgroud)
我想通过以下方式访问列:
row = self.link.fetchall()
if row["address"]:
self.address = self.filterAddress(row["address"])
Run Code Online (Sandbox Code Playgroud)
我收到了错误"list indices must be integers, not str".
当我打印row我得到以下结构返回:
{u'address': 'Address Value', u'domain': 'Domain Value'}
Run Code Online (Sandbox Code Playgroud)
如何访问"地址"字符串?
在上面的情况下,我试图只选择1个result(WHERE id=:%d),然后检查它是否已address设置.要做到这一点,使用它不是一个好主意,self.link.fetchall()因为它会返回一个列表,其中包含可以在循环中使用的所有结果.
要使用的正确函数self.link.fetchone()只返回字典.如果您使用:
row = self.link.fetchone()
Run Code Online (Sandbox Code Playgroud)
那你也可以用
print row["key"]
Run Code Online (Sandbox Code Playgroud)
如果你使用
row = self.link.fetchall()
Run Code Online (Sandbox Code Playgroud)
然后你必须使用
print row[0]["key"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16051 次 |
| 最近记录: |