Найти - Пользователи
Полная версия: Не выводит данные из MySQL
Начало » Python для новичков » Не выводит данные из MySQL
1
Leon_Markelov
Всем привет.
Бот не выводит данные из бд, точнее выводит только значение из последнего столбца.

Код:
 if msg == '/logs':
                try:
                    cur.execute("select `admin`, `ip`, `type`, `description`, `time` from `action_log`")
                    result = cur.fetchall()
                    sender(id, result);
                except:
                    myconn.rollback()
Выводит просто “0”
Скриншоты вывода и бд прикладываю ниже.
Leon_Markelov
Скрин БД
py.user.next
Полный код бота скинь.
ntram
VANISHED
Leon_Markelov
py.user.next
Полный код бота скинь.
 import vk_api, json
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
import datetime
import requests
import re
import mysql.connector
myconn = mysql.connector.connect(host = "***.***.**.***", user = "***", passwd = "***", database = "***")
cur = myconn.cursor()
cmds = ['kick', 'ban']
vk_session = vk_api.VkApi(token = "***")
longpoll = VkBotLongPoll(vk_session, ***)
def sender(id, text):
    vk_session.method('messages.send', {'chat_id' : id, 'message' : text, 'random_id' : 0})
def kikuser(id, user):
    vk_session.method("messages.removeChatUser", {"chat_id": id, "user_id": user, "random_id": 0})
for event in longpoll.listen():
    if event.type == VkBotEventType.MESSAGE_NEW:
        if event.from_chat:
            id = event.chat_id
            msg = event.object.message['text']
            cmd = msg.split(' ')[0].replace('/', '')
            iduser = event.message.get('from_id')
            city: ['Moscow (RU)', 'Moscow (US)', 'Moscow (US)']
            city_id = 0
            appid = "c8dc7b7da80b108fa76abd084c4e2ecc"
            if cmd in cmds and '[' in msg and ']' in msg:
                try:
                    idd = re.findall(rf'/{cmd} \[id(\d*)\|.*]', msg)[0]
                    try:
                        msg1 = msg.split(' ')[2]
                        msg4 = msg.split(' ')[3]
                        if msg4 == '1':
                            biba = 'С возможностью восстановления'
                        if msg4 == '0':
                            biba = 'Без возможности восстановления'
                        kikuser(id, idd)
                        sender(id,
                               f"@id{idd}(Пользователь) успешно исключён из беседы.\nАдминистратор: @id{iduser}(Администратор)\n"
                               f"Дата:  {datetime.datetime.now().strftime(' %d.%m.%Y')}\nВремя:{datetime.datetime.now().strftime(' %H:%M:%S')}\n"
                               f"Причина: {msg1}\nТип кика: {biba}")
                        sender(15,
                               f"@id{iduser}(Администратор) кикнкул @id{idd}(Пользователя)\nБеседа выполненной команды: {id}\nПричина: {msg1}\nТип кика:{biba}")
                    except:
                        msg3 = msg.split(' ')[2]
                        if msg3 == '1':
                            boba = 'С возможностью восстановления'
                        if msg3 == '0':
                            boba = 'Без возможности восстановления'
                        kikuser(id, idd)
                        sender(id,
                               f"@id{idd}(Пользователь) успешно исключён из беседы.\nАдминистратор: @id{iduser}(Администратор)\n"
                               f"Дата:  {datetime.datetime.now().strftime(' %d.%m.%Y')}\nВремя:{datetime.datetime.now().strftime(' %H:%M:%S')}\n"
                               f"Причина: Нет причины\nТип кика: {boba}")
                        sender(15,
                               f"@id{iduser}(Администратор) кикнкул @id{idd}(Пользователя)\nБеседа выполненной команды: {id}\nПричина: {msg1}\nТип кика:{boba}")
                except:
                    sender(id,
                           f'@id{iduser}(Администратор), пожалуйста, проверь правильность выполнения команды.\n/kick Пользователь Причина Тип кика\n\nДоступные типы кика: 1 - с возможностью восстановления\n0 - без возможности восстановления')
                    sender(15, f"@id{iduser}(Администратор) с конференции {id} неверно использовал функцию kick")
            if msg == '/logs':
                try:
                    cur.execute("select `admin`, `ip`, `type`, `description`, `time` from `action_log`")
                    result = cur.fetchall()
                    sender(id, result);
                except:
                    myconn.rollback()
            if msg == '/погода':
                try:
                    res = requests.get("http://api.openweathermap.org/data/2.5/forecast",
                                       params={'id': city_id, 'units': 'metric', 'lang': 'ru', 'APPID': appid})
                    data = res.json()
                    for i in data['list']:
                        print(i['dt_txt'], '{0:+3.0f}'.format(i['main']['temp']), i['weather'][0]['description'])
                except Exception as e:
                    print("Exception (forecast):", e)
                    pass
            if msg in ['/time']:
                sender(id, f"Текущее время и дата. \n\nНа данный момент в Москве: {datetime.datetime.now().strftime(' %H:%M:%S')}\nДата: {datetime.datetime.now().strftime(' %d.%m.%Y')}")
            if msg in ['/kick', '/кик']:
                sender(id, 'Ошибка при использовании команды!\nИспользуйте /kick Пользователь Причина Тип кика (0, 1) \n\nУчтите, что все Ваши действия логгируются!\n\nВ случае, если причина не будет указана Вас могут снять с поста!')
                sender(15, f"@id{iduser}(Администратор) с конференции {id} неверно использовал функцию kick")
            if msg == 'test':
                sender(id, f"{datetime.datetime.now().strftime('%H:%M:%S')}")
                sender(15, f"Тестовое сообщение")
            if msg in ['/help', '/хелп', '/помощь', 'help', 'хелп', 'помощь']:
                sender(id, f'🔑  Команды доступные основателю:\n\n'
                           f'/setowner - выдать права основателя в конференции\n'
                           f'/setspecadmin - выдать права специального администратора конференции\n'
                           f'/hallotext - установка приветственного сообщения\n/setting - установить различные настройки конфереции\n'
                           f'/checkpublick - проверить подписку на указанную группу\n\n'
                           f'⚙  Команды специального администратора:\n\n'
                           f'/rkick - исключить людей, которых инвайтнули менее 24 часов назад\n/setadmin - добавить администратора\n'
                           f'/addfilter - добавить слово в фильтер\n/addmentionlist - добавить запрет на упоминание человека\n\n'
                           f'⚔  Команды администратора:\n\n'
                           f'/setmoderation - добавить модератора\n/removeroles - снять привелегии\n'
                           f'/setnick - установить имя игроку\n/nicklist - просмотреть список ников\n/removenick - снять ник игрока\n'
                           f'/getnick - просмотреть ник\n/getnicksuser - получить вконтакте игрока через ник\n\n'
                           f'🔧  Команды модератора:\n\n'
                           f'/mute - выставить затычку\n/unmute - снять затычку\n/mutelist - список замученых игроков\n/warn - выдать предупреждение\n'
                           f'/unwarn - снять предупреждение\n/warnlist - список пользователей с предупреждением\n/kick - исключить пользователя\n'
                           f'/ban - заблокировать пользователя\n/unban - разблокировать пользователя\n/banlist - список заблокированных пользователей\n'
                           f'/getmute - просмотреть информацию о муте\n/getwarn - посмотреть информацию о варне\n/checkpunish - посмотреть наказания\n'
                           f'/help - список команд\n/reg - просмотреть дату регистрации аккаунта\n/cc - очистить чат\n/online - просмотреть пользователей онлайн\n'
                           f'/stats - просмотреть статистику человека ')
            if msg == '/cc':
                sender(id, f'ᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nᅠ\nЧат был очищен @id{iduser}(Администратором) конференции.')
                sender(15, f"@id{iduser}(Администратор) использовал функцию очистки чата.\nИндивидуальный номер конференции: {id}")
            if msg.startswith('/in_all_conference'):
                sender(18, 'Сообщение от имени разработчика отправлено.')
                sender(15, f'@id{iduser}(Разработчик) отправил информационное сообщение.')
                for i in range(16, 50):
                    sender(i, f'Оповещение от @id{iduser}(разработчика): \n{msg}'.replace('/in_all_conference', ''))
py.user.next
Попробуй такие варианты
  
sender(id, 'test text');
  
sender(id, repr(result));
Убедись, что выводится именно то, что и передаётся, а не что-то другое.

ntram
обязательно с токеном
Обычно токен устанавливается в переменную среды, а уже переменная среды берётся в скрипте через os.getenv(). Это тут просто наплыв такой, что токены пишут прямо в скрипты.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB