scrapy + adbapi = AttributeError:'module'对象没有属性'DictCursor'

时间:2013-07-30 15:15:40

标签: python scrapy

我有一个CrawlSpider我设置了一个项目管道,我试图通过MySQLdb继续。我已经搜遍了所有我发现的样本至少6个月大,所有样本都以同样的方式使用adbapi。当我尝试使用相同的格式时,出现以下错误:

AttributeError: 'module' object has no attribute 'DictCursor'

我没有看到我在这里做错了什么,但我对Python很陌生,对于scrapy来说还是新手,所以它完全有可能是我想要的简单。

from twisted.enterprise import adbapi
from scrapy import log

import MySQLdb.cursors

class InventoryPipeline(object):
    def __init__(self):
        self.pool = adbapi.ConnectionPool('MySQLdb',
                db='inventory',
                user='root',
                passwd='',
                cursorClass=MySQLdb.cursors.DictCursor,
                charset="utf8",
                use_unicode=True
            )


    def process_item(self, item, spider):
        query = self.pool.runInteraction(self._insert_record, item)
        query.addErrback(self._handle_error)
        return item


    def _insert_record(self, tx, item):
        tx.execute("select * from content where url = %s", (item['url']))
        result = tx.fetchone()
        if result:
            log.msg("url already in database", level=log.INFO)
        else:
            tx.execute("insert into content (url, title, link_content, main_content, header) values (%s, %s, %s, %s, %s)",
                (item['url'], item['title'], item['link_content'], item['main_content'], item['header']))
            log.msg("Item stored in db: %s" % item, level=log.INFO)
        return item


    def _handle_error(self, e):
        log.err(e)

1 个答案:

答案 0 :(得分:0)

我也遇到了这个问题,我解决了。

你可以试试这个

来自MySQLdb.cursors的

导入DictCursor

并将cursorClass更改为“cursorClass = DictCursor”

它适用于我的电脑,我希望它也能帮助你和其他人