Задать вопрос
@HeLDaN

Incorrect number of bindings supplied. The current statement uses 3, and there are 1 supplied. Как решить проблему?

Не смог сам решить проблему, пытался найти решиние в интернете не помогло. Помогите, как это решить?

import sqlite3 as sq
from bot import bot

base = sq.connect('post.db')
cur = base.cursor()
base.execute('''CREATE TABLE IF NOT EXISTS post (
  img TEXT,
  name TEXT,
  button TEXT
)''')
base.commit()


if base:
  print('Data base connect...')
base.commit()

async def sql_add(state):
  async with state.proxy() as data:
    cur.execute('INSERT INTO post VALUES (?, ?, ?)', tuple(data.values()))
    base.commit()

async def send(message):
  for ret in cur.execute('SELECT * FROM post(img, name, button)').fetchall():
    await bot.send_photo(message.from_user.id, ret[0], f'{ret[2]} {ret[1]}')
  • Вопрос задан
  • 34 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@o5a
Ошибка говорит о том, что в качестве параметра execute передается несоответствующее запросу число данных.

В 'INSERT INTO post VALUES (?, ?, ?)' предполагается 3 значения, а tuple(data.values()) содержит только одно, т.е. в словаре только 1 ключ. Проверяйте, что туда пишете и что хотите взять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы