Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.12.2022
Сообщений: 3

SQL запрос для tg бота не фильтруется по WHERE

26.06.2023, 04:53. Показов 1122. Ответов 3

Студворк — интернет-сервис помощи студентам
Пишу тг бота для заявок. База данных с таблицей users, колонками userid, application, AppStatus. В таблицу записывается id пользователя, текст заявки и изменяется статус заявки.
id записывается без проблем, но когда дело доходит до текста заявки которая должна записываться только в строчку с нужным id в бд остаётся 0(поставил значение по дефолту), так же и с статусом заявки. Если убрать WHERE то заявка заносится в бд, но понятно что во все записи. Захардкодить id не получилось, так же ничего не записывает.

Вот функции с sql командами:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def __init__(self, db_file):
        self.connection = sqlite3.connect(db_file)
        self.cursor = self.connection.cursor()
        
    def add_user(self, user_id):
        with self.connection:
            return self.cursor.execute("INSERT INTO 'allusers' ('id') VALUES (?)", (user_id,))
        
    def add_idInUser(self, user_id):
        with self.connection:
            return self.cursor.execute("INSERT INTO 'users' ('userid') VALUES (?)", (user_id,))
            
            
    def user_exists(self, user_id):
        with self.connection:
            result = self.cursor.execute("SELECT * FROM 'allusers' WHERE 'id' = ?", (user_id,)).fetchall()
            return bool(len(result))
      
    def set_application(self, user_id, application):
        with self.connection:
            return self.cursor.execute("UPDATE 'users' SET 'application' = ? WHERE 'userid' = ?", (application, user_id,))
    
    def set_appstat(self, user_id, AppStatus):
        with self.connection:
            return self.cursor.execute("UPDATE 'users' SET 'AppStatus' = ? WHERE 'userid' = ?", (AppStatus, user_id,))
 
    def commit(self):
        with self.connection:
            return self.connection.commit()
Ожидание сообщения от пользователя сделана через машину состояний, маркапы в отдельном файле
вот код самого бота:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import logging
from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import StatesGroup, State
from db import Database
import markups as nav
 
TOKEN = 'Мой токен'
 
logging.basicConfig(level=logging.INFO)
 
storage = MemoryStorage()
bot = Bot(token = TOKEN)
dp = Dispatcher(bot, storage = storage)
 
db = Database('applicationsDB.db')
 
 
class ApplicationStateGroup(StatesGroup):
    application = State()
 
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
 
    if (not db.user_exists(message.from_user.id)):
        
        db.add_user(message.from_user.id)
        db.commit()
        
        db.add_idInUser(message.from_user.id)
        db.commit()
        
        await bot.send_message(message.from_user.id, 'Здравствуйте, выберете одну из кнопок', reply_markup=nav.mainMenu)
 
    else:
        await bot.send_message(message.from_user.id, 'Здравствуйте, выберете одну из кнопок', reply_markup=nav.mainMenu)
 
 
@dp.message_handler()
async def bot_message(message: types.Message):
    if message.text == 'Создать заявку':
        await bot.send_message(message.from_user.id, 'Введите ваше ФИ, номер кабинета и опишите проблему')
        await ApplicationStateGroup.application.set()
        
    else:
        pass
 
@dp.message_handler(content_types=['text'], state = ApplicationStateGroup.application)
async def load_application(message: types.Message, state: FSMContext):
    async with state.proxy() as data:
        data['application'] = message.text
 
        db.set_application(message.from_user.id, data['application'])
        db.commit()
 
        
        db.set_appstat(message.from_user.id, 'notcompleted')
        db.commit()
        
        await bot.send_message(message.from_user.id, 'Заявка успешно отправлена')
        await state.finish()
    
    
if __name__ == "__main__":
    executor.start_polling(dp, skip_updates = True)
воюю с ним уже дня 3, у парня из видео всё работало. Может кто знает в чем дело. Буду благодарен
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.06.2023, 04:53
Ответы с готовыми решениями:

Не фильтруется запрос
Здравствуйте, помогите пожалуйста, у меня есть таблица с иминами фамилиями и прочей ерундой, мне надо вывести в алфавитном порядке все...

База фильтруется в XP но не фильтруется в Windows2000
Пожалуйста помоги не знаю что делать. Сделал проект в delphi с БД access связал технология ADO сделал там фильтрации сортировки форму...

Настройка SQL базы данных для ТГ бота
Доброго вечера, прошу у знающих людей помощи, объясните что я делаю не так! Скачал ТГ бота автошопа на питоне. Всё поставил, бот...

3
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
27.06.2023, 19:13
Цитата Сообщение от Kerel Посмотреть сообщение
INSERT INTO 'allusers' ('id') VALUES (?)
Вы в каком мануале/учебнике по sql прочитали, что имена таблиц/полей можно оборачивать в одинарные кавычки?
1
0 / 0 / 0
Регистрация: 01.12.2022
Сообщений: 3
28.06.2023, 06:51  [ТС]
Делал по видео с ютьюба, у парнишки всё работало, но и у меня с кавычками всё работает кроме where
0
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,306
30.06.2023, 16:24
В большинстве БД в SQL строка в одинарных кавычках обозначает строковый литерал. Имена столбцов/таблиц пишут либо без кавычек, либо, если имена схожи с зарезирвированными словами, в обратных одинарых кавычках
SQL
1
2
'строковый литерал'
`имя столбца/таблицы`
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2023, 16:24
Помогаю со студенческими работами здесь

Адаптировать SQL запрос в запрос для access
Помогите пожалуйста: имеется вот такой рабочий запрос созданный в exel. но так как Exel перестал вывозить разросшиюся базу перевозим все...

SQL запрос в Query для соединения двух таблиц для Qreport
Время поджимает. Некогда думать самому. Есть две таблицы парадокс. в первой есть поле код_товара и название_товара. во второй поле...

Запрос для SQL
Вывод количества сообщений из топика конкретной темы. Выводит ноль. $top=$_GET; $query3=mysqli_query($db, "SELECT COUNT(*)...

SQL запрос для ID
Всем привет. Дано какая-то таблица с данными где есть ID. И у ID следующая последовательность 1,2,3,4,5,6,7,8,9,10,11, 22,23,24,... ...

Запрос от бота
@bot.inline_handler(lambda query: len(query.query) > 0) Написано с библиотекой aiogram, но я не понимаю при каких условиях функция...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru