sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 1,提供了 4 个
Posted
技术标签:
【中文标题】sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 1,提供了 4 个【英文标题】:sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 4 supplied 【发布时间】: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。
但是,它显示
。
下面是我创建表格的代码
CREATE TABLE "stocks" (
"stocknum" TEXT NOT NULL,
PRIMARY KEY("stocknum")
);
我不知道如何调整我的桌子或爬虫。 我已经做了好几个小时了,我不知道发生了什么。
【问题讨论】:
【参考方案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,))
【讨论】:
以上是关于sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 1,提供了 4 个的主要内容,如果未能解决你的问题,请参考以下文章