【问题标题】:sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 suppliedsqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 1,提供了 4 个
【发布时间】:2020-10-15 17:11:13
【问题描述】:
def get_stock(item_url):
    source_code = requests.get(item_url)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text, features="html.parser")

    for link in soup.findAll('a',{'class':'none'}):
        words=link.string
        stock_num=words[1:5]


        if stock_num.isdigit():
            href='https://tw.stock.yahoo.com/q/q?s='+ stock_num
            print(stock_num)
            c.execute('insert into stocks(stocknum) values (?)',stock_num)
            conn.commit()

我正在尝试将四位字符串 stock_num 插入我的 SQLite。 但是,它显示

sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 1,提供了 4 个。

下面是我创建表格的代码

CREATE TABLE "stocks" (
    "stocknum"  TEXT NOT NULL,
    PRIMARY KEY("stocknum")
);

我不知道如何调整我的桌子或爬虫。 我已经做了好几个小时了,我不知道发生了什么。

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    您需要在元组中传递参数——如果只有一个,则为 1 元组,但仍然是元组。

    错误消息源于字符串 stock_num 恰好有 4 位数字,因此 sqlite 包装器解析例如"1337""1""3""3""7"

    要解决这个问题,

    c.execute('insert into stocks(stocknum) values (?)', stock_num)
    

    应该是

    c.execute('insert into stocks(stocknum) values (?)', (stock_num,))
    

    【讨论】:

      猜你喜欢
      • 2022-01-05
      • 1970-01-01
      • 2013-05-27
      • 2016-01-21
      • 1970-01-01
      相关资源
      最近更新 更多