title: Writing items to a MySQL database in Scrapy
body: <p>I am new to Scrapy, I had the spider code</p>
  
  <pre><code>class Example_spider(BaseSpider):
     name = "example"
     allowed_domains = ["www.example.com"]
  
     def start_requests(self):
         yield self.make_requests_from_url("http://www.example.com/bookstore/new")
  
     def parse(self, response):
         hxs = HtmlXPathSelector(response)
         urls = hxs.select('//div[@class="bookListingBookTitle"]/a/@href').extract()
         for i in urls:
             yield Request(urljoin("http://www.example.com/", i[1:]), callback=self.parse_url)
  
     def parse_url(self, response):
             hxs = HtmlXPathSelector(response)
             main =   hxs.select('//div[@id="bookshelf-bg"]')
             items = []
             for i in main:
             item = Exampleitem()
             item['book_name'] = i.select('div[@class="slickwrap full"]/div[@id="bookstore_detail"]/div[@class="book_listing clearfix"]/div[@class="bookstore_right"]/div[@class="title_and_byline"]/p[@class="book_title"]/text()')[0].extract()
             item['price'] = i.select('div[@id="book-sidebar-modules"]/div[@class="add_to_cart_wrapper slickshadow"]/div[@class="panes"]/div[@class="pane clearfix"]/div[@class="inner"]/div[@class="add_to_cart 0"]/form/div[@class="line-item"]/div[@class="line-item-price"]/text()').extract()
             items.append(item)
         return items
  </code></pre>
  
  <p>And pipeline code is:</p>
  
  <pre><code>class examplePipeline(object):
  
      def __init__(self):               
          self.dbpool = adbapi.ConnectionPool('MySQLdb',
                  db='blurb',
                  user='root',
                  passwd='redhat',
                  cursorclass=MySQLdb.cursors.DictCursor,
                  charset='utf8',
                  use_unicode=True
              )
  def process_item(self, spider, item):
      # run db query in thread pool
      assert isinstance(item, Exampleitem)
      query = self.dbpool.runInteraction(self._conditional_insert, item)
      query.addErrback(self.handle_error)
      return item
  def _conditional_insert(self, tx, item):
      print "db connected-=========&gt;"
      # create record if doesn't exist. 
      tx.execute("select * from example_book_store where book_name = %s", (item['book_name']) )
      result = tx.fetchone()
      if result:
          log.msg("Item already stored in db: %s" % item, level=log.DEBUG)
      else:
          tx.execute("""INSERT INTO example_book_store (book_name,price)
                      VALUES (%s,%s)""",   
                              (item['book_name'],item['price'])
                      )
          log.msg("Item stored in db: %s" % item, level=log.DEBUG)            
  
  def handle_error(self, e):
      log.err(e)          
  </code></pre>
  
  <p>After running this I am getting the following error </p>
  
  <pre><code>exceptions.NameError: global name 'Exampleitem' is not defined
  </code></pre>
  
  <p>I got the above error when I added the below code in <code>process_item</code> method</p>
  
  <pre><code>assert isinstance(item, Exampleitem)
  </code></pre>
  
  <p>and without adding this line I am getting </p>
  
  <pre><code>**exceptions.TypeError: 'Example_spider' object is not subscriptable
  </code></pre>
  
  <p>Can anyone make this code run and make sure that all the items saved into database?</p>