2015-09-08 67 views
2

最近,我使用Python和Scrapy从博客中抓取文章信息(如“标题”)。没有使用数据库,结果很好/如预期。然而,当我使用SQLAlchemy,我收到以下错误:InterfaceError:(sqlte3.InterfaceError)错误绑定参数0

InterfaceError:(sqlite3.InterfaceError)Error binding parameter 0 -probably unsupported type.[SQL:u'INSERT INTO myblog(title) VALUES (?)'] [PARAMETERS:([u'\r\n Accelerated c++\u5b66\u4e60
chapter3 -----\u4f7f\u7528\u6279\u636e \r\n '],)]

我的XPath表达式是:
item['title'] = sel.xpath('//*[@class="link_title"]/a/text()').extract()

这让我对item['title']以下值:
[u'\r\n Accelerated c++ \u5b66 \u4e60 chapter3 -----\u4f7f\u7528\u6279\u636e \r\n ']

它的Unicode ,为什么sqlite3不支持它?这个博客的标题信息包含一些中文。我厌倦了sqlalchemy。我提到了它的文件,但什么都没发现,而且我没有想法。

回答

0

您遇到的问题是SQLite3想要一个“String”的数据类型,并且您传入的列表中包含unicode字符串。

变化:
item['title'] = sel.xpath('//*[@class="link_title"]/a/text()').extract()

item['title'] = sel.xpath('//*[@class="link_title"]/a/text()').extract()[0]

您将剩下一个要插入的字符串,并且SQLite3错误应该消失。但是,警告,如果你想要处理的不仅仅是一个标题,这会限制你到第一个。尽管如此,你可以使用任何你想要的方法说服那些人成为一个字符串。

+0

你是对的,我试过了你的方法,然后完成它,非常感谢!当使用python时,我总是犯下关于变量tpye的错误。 – user4763728

相关问题