我不能在管道中插入mysql数据库

2024-10-05 12:17:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用scrapy中的Pipeline将项插入到db中,但它不起作用。 我使用扭曲的.adbapi使用设置:

数据库服务器='MySQLdb' 数据库连接={ “数据库”:“vcinema_v4”, 'user':'root', '密码':'我的秘密密码', “主机”:“127.0.0.1”, '字符集':'utf8', “使用_unicode”:True }在

类MySQLPipeline(对象):

def __init__(self):
    dbargs = settings.get('DB_CONNECT')
    db_server = settings.get('DB_SERVER')
    dbpool = adbapi.ConnectionPool(db_server, **dbargs)

    self.dbpool = dbpool

def process_item(self, item, spider):
    assert isinstance(item, CityItem)
    query = self.dbpool.runInteraction(self._conditional_insert, item)
    query.addErrback(self.handle_error)
    return item

def _conditional_insert(self, tx, item):
    print "db connected-==============>"
    tx.execute("select * from city where name=%s" % (item['name']))
    result = tx.fetchOne()
    if result:
        log.msg("Item already stored in db: %s" % item, level=log.DEBUG)
    else:
        tx.execute("""INSERT INTO city(name) VALUES(%s)""", (item['name']))
        log.msg("Item stored in db: %s" % item, level=log.DEBUG)
    print "db end"

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

请帮帮我。提前谢谢。在


Tags: nameselflog数据库密码dbgetsettings

热门问题