【问题标题】:InterfaceError:(sqlte3.InterfaceError)Error binding parameter 0InterfaceError:(sqlte3.InterfaceError)错误绑定参数0
【发布时间】:2015-09-09 13:48:59
【问题描述】:

最近,我使用 Python 和 Scrapy 从博客中抓取文章信息,例如“标题”。在不使用数据库的情况下,结果很好/符合预期。但是,当我使用 SQLalchemy 时,我收到以下错误:

InterfaceError:(sqlite3.InterfaceError)错误绑定参数0 - 可能是不支持的类型。[SQL:u'INSERT INTO myblog(title) VALUES (?)'] [PARAMETERS:([u'\r\n Accelerated c++\u5b66\u4e60
第3章 -----\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。我参考了它的文件,但一无所获,而且我没有想法。

【问题讨论】:

    标签: python xpath sqlite scrapy


    【解决方案1】:

    您遇到的问题是 SQLite3 需要“字符串”的数据类型,而您正在传入一个包含 unicode 字符串的列表。

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

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

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

    【讨论】:

    • 你说得对,我试过你的方法,然后就搞定了,非常感谢!使用python的时候,变量的类型总是出错。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多