TypeError:列表索引必须是整数或片,而不是str |如何在Python中创建关联数组?

TypeError:列表索引必须是整数或片,而不是str |如何在Python中创建关联数组?,python,Python,我在Python 3.8中遇到以下错误: results['article'] = row[0] TypeError: list indices must be integers or slices, not str 我的问题是: curb = conn.cursor(buffered=True) curb.execute(""" SELECT article, url

我在Python 3.8中遇到以下错误:

results['article'] = row[0]
TypeError: list indices must be integers or slices, not str
我的问题是:

    curb = conn.cursor(buffered=True)
    curb.execute("""
        SELECT
            article,
            url
        FROM
            table
        WHERE
            id = %s
            -- %s
        LIMIT 2
        """, (
        test_id,
        test_id
    )
    )
    results = curb.fetchall()
    for row in results:
        results['article'] = row[0]
        results['url'] = row[1]
我知道在这方面也有类似的问题,但是到目前为止我还不知道如何用python构建一个关联数组来服务于这个用例

我的目标是将这篇文章与yield语句一起传递,这就是为什么我试图将其放入某种关联数组中

def start_requests(self):
    for result in self.results:
        if validators.url(result['url']):
            yield scrapy.Request(
                url=result['url'],
                callback=self.parse_item,
                meta={'article': result['article']}
            )
        else:
            print("Invalid URL ", format(result['url']))

另一个问题是
results
是一个设计用于返回0行或多行数据库的对象。您知道(因为您有
id=xxx
)只返回一行。看起来您想要的是:

for row in results:
    answer = dict(article=row[0], url=row[1])
    break
如果没有返回行,您可能还需要将
应答
初始化为


根据您在下面的评论,听起来您想要:

answer = {}
for row in result:
    article = row[0]
    url = row[1]
    answer[url] = article
这将为您提供一个从URL到文章的映射。如果您熟悉Python,可以使用字典理解将其简化为一行:

answer = {row[1]: row[0] for row in result}

这是你真正想要的吗:

cursor=conn.cursor(buffered=True)
执行(
# ...
)
#注意变量的名称
fetch_results=curb.fetchall()
结果=[]
对于fetch_结果中的行:
结果={}
结果['article']=行[0]
结果['url']=行[1]
#收集此行的其他信息。。。
results.append(结果)

Post
print(corb.fetchall())
“关联数组”的输出是Python中的dict(
{}
results
不是一个dict,它是一个列表(
[]
)。@flakes返回“[]”,这很奇怪,因为当我在DB上执行它时,SQL返回2个expexted结果。也许参数化查询有问题?我添加了第二个参数,因为它不能只使用一个参数。实际上,将返回多行,这只是一个最小的示例OK。我本来想问另一个问题,直到我看到你只返回了一行。您有多对文章和URL。假设你有十排。您将有十个URL及其相关文章。你希望你的结果是什么样的?我不确定我是否理解你所说的单行是什么意思。结果返回2行(限制2)。每行包含一个URL和一篇文章。我的目标是获得数千行,在这些行中我知道哪篇文章属于哪一个URL,并在我的答案中看到其他注释。