我使用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)
请帮帮我。提前谢谢。在
目前没有回答
相关问题 更多 >
编程相关推荐