0 / 0 / 0
Регистрация: 04.03.2021
Сообщений: 6

Не заполняется база данных (aiogram bot)

15.12.2021, 19:29. Показов 3088. Ответов 5

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Прошу вас помочь, пожалуйста, с решением такой проблемы:
Создаю по туториалу бота в Telegram с помощью библиотек aiogram
Код модуля для базы данных и машины состояний из туториала работает без нареканий, база заполняется и выводится.

Рабочий кусок:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def sql_start():
    global base, cur
    base = sq.connect("coriolis.db")
    cur = base.cursor()
    if base:
        print("База данных подключена")
    base.execute("CREATE TABLE IF NOT EXISTS menu(img TEXT, name TEXT PRIMARY KEY, description TEXT, price TEXT)")
    base.commit()
 
#Наполнение базы данных
async def sql_add_command(state):
    async with state.proxy() as data:
        cur.execute("INSERT INTO menu VALUES (?, ?, ?, ?)", tuple(data.values())) #ЗДЕСЬ РАБОТАЕТ ВЕРНО
        base.commit()
Возникла необходимость создания второй (почти) такой же базы, с теми же полями, но одно поле за ненадобностью убрал.
Скопировал модули для машины состояний и работы с базой, поправил их для работы, так же убрав одно поле и состояние.
Получился в модуле с базой практически такой же код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def sql_start():
    global base, cur
    base = sq.connect("manufact.db")
    cur = base.cursor()
    if base:
        print("База данных подключена")
    base.execute("CREATE TABLE IF NOT EXISTS menu(img TEXT, name TEXT PRIMARY KEY, description TEXT)")
    base.commit()
 
#Наполнение базы данных
async def sql_add_command_man(state):
    async with state.proxy() as data:
        cur.execute("INSERT INTO menu VALUES (?, ?, ?)", tuple(data.values()))
        base.commit()
Но при заполнении базы данных, при попытке выполнить код:

cur.execute("INSERT INTO menu VALUES (?, ?, ?)", tuple(data.values()))

выдаёт ошибку:

File "B:\GitStud\Project\Telegram_bot\data_ba se\manufactors.py", line 19, in sql_add_command_man
cur.execute("INSERT INTO menu VALUES (?, ?, ?)", tuple(data.values()))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 3, and there are 2 supplied.

Итого: в практически идентичных кодах ошибка, корень которой найти нигде не могу (также ввиду неопытности в разработке)
Надеюсь на вашу помощь!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.12.2021, 19:29
Ответы с готовыми решениями:

BOT aiogram
Привет, помогите пожалуйста. Хочу сделать функцию, которая срабатывает, когда приходит команда в телеграмме. Она будет бесконечно...

После нажатия пользователем на кнопку бот должен записывать в переменную то, что отправил пользователь
Подскажите пожалуйста как можно сделать такую штуку. У меня есть телеграм бот, в котором сделаны кнопки и после нажатия пользователем на...

Не заполняется база данных
Здравствуйте VS 2013 MVC 4 БД автозаполняется следующим образом using System; using System.Collections.Generic; using...

5
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
15.12.2021, 19:36
Цитата Сообщение от barsiqe Посмотреть сообщение
корень которой найти нигде не могу
а если прочиттать ошибку? как думаешь что означает "The current statement uses 3, and there are 2 supplied."? я вот даже не знаю как питон мог яще более явно тебе написать.
0
0 / 0 / 0
Регистрация: 04.03.2021
Сообщений: 6
15.12.2021, 20:03  [ТС]
Так я даже не понимаю чего он хочет) в интернете искал подобную проблему, но ситуации там немного другие, не смог перенести на свою.
Как я понял, я пытаюсь впихнуть ему 3 "чего-то", а он поддерживает только 2. Но где конкретно в коде увидеть, сколько он поддерживает - без понятия
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
15.12.2021, 20:08
barsiqe, да что с вами люди?
питон даже строку тебе показал, чего там гуглить то? надо было просто перевести и подумать.
Цитата Сообщение от barsiqe Посмотреть сообщение
"INSERT INTO menu VALUES (?, ?, ?)", tuple(data.values()
Цитата Сообщение от barsiqe Посмотреть сообщение
3 "чего-то",
а сколько у тебя вопросительных знаков в выражении?

Цитата Сообщение от barsiqe Посмотреть сообщение
а он поддерживает только 2
врешь, не "поддерживает", а сунул ты ему только 2, вот тут tuple(data.values(). Посмотри сколько там данных
0
0 / 0 / 0
Регистрация: 04.03.2021
Сообщений: 6
15.12.2021, 20:23  [ТС]
Как я ему мог сунуть 2, когда в модуле машины состояний есть 3 этапа, и в каждом из них я передаю данные?

Такие дела первый раз вообще делаю, конечно я не разбираюсь за то что там происходит
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
15.12.2021, 20:46
Цитата Сообщение от barsiqe Посмотреть сообщение
Как я ему мог сунуть 2, когда в модуле машины состояний есть 3 этапа
я не знаю про твои этапы но вот ошибка говорит что там все пара значений. Ты возьми да выведи их или в отладчике посмотри.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2021, 20:46
Помогаю со студенческими работами здесь

Telegram bot AIOGRAM
не работает код @dp.message_handler() async def bot_message(message: types.Message): # SUPPORT MENU if...

LiveLocation Aiogram bot telegram
Доброго времени суток! Пишу телеграм бота на библиотеке aiogram и хочу чтобы бот отслеживал мое местоположение (как я понял принудительно...

Не заполняется база данных данными из инициализатора
Работаю в Visual Studio 2017 Есть модели public class Seller { public int Id { get;...

После выполнения запросов база данных не заполняется
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

LINQ to SQL - не заполняется динамически создаваемая база данных
Привет, передо мной стоит задача написать код, в котором будет создана динамически база данных и, соответственно, в коде же она наполняется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru