Почему не работает вставка данных в таблицу через слеш команду?

Ссылка скопирована
1 ответ

Моя догадка, что это из за ошибки в написании части с рандомным числом. Прошу поправить код или хотя бы дать наводку, как это исправить.

Почему не работает вставка данных в таблицу через слеш команду?

. В таблице: 4 колонки

Почему не работает вставка данных в таблицу через слеш команду?

import disnake from disnake.ext import commands from main import connection, cursor import random import pymysql   class Idenificator(commands.Cog):     def __init__(self, bot: commands.Bot):         self.bot = bot         @commands.slash_command(description="Отправка запроса на выдачу матов", test_guilds=[1222102533577900112])         async def new_token(self, inter: disnake.ApplicationCommandInteraction,                        Имя_Фамилия: str,                        CID: str):             try:                 cursor.execute('SELECT * FROM identificator WHERE cid = ?', (CID,))                 existing_user = cursor.fetchone()                  if existing_user:                     embed = disnake.Embed(title="Ошибка", description="Уже существует жетон зарегистрированнный для этого CID", color=disnake.Color.red())                     await self.response.send_message(embed=embed)                     connection.close()                     return                  check_db = cursor.execute('SELECT * FROM identificator WHERE token = ?', (final_number,))                 number_in_database = cursor.fetchone                  while number_in_database:                     random_number = random.randint(0, 99999999)                     formatted_number = f'{random_number:08d}'                     final_number = f'{formatted_number[:4]}-{formatted_number[4:]}'                      number_in_database = check_db(final_number)                     cursor.execute('INSERT INTO identificator (nickname, cid, token) VALUES (?, ?, ?)', (Имя_Фамилия, CID, final_number))                   connection.commit()                 connection.close()                  embed = disnake.Embed(title="Жетон успешно создан. Вот ваш жетон", description=f"/do На груди закреплен жетон: [Организация | Звание | {final_number}]", color=disnake.Color.green())                 await self.response.send_message(embed=embed)              except Exception as e:                 embed = disnake.Embed(title="Ошибка", description=f"Произошла ошибка при выполнении команды: {e}", color=disnake.Color.red())                 await self.response.send_message(embed=embed)  def setup(bot: commands.Bot):     bot.add_cog(Idenificator(bot))

import disnake from disnake.ext import commands from main import connection, cursor import random import pymysql class Idenificator(commands.Cog): def __init__(self, bot: commands.Bot): self.bot = bot @commands.slash_command(description="Отправка запроса на выдачу матов", test_guilds=[1222102533577900112]) async def new_token(self, inter: disnake.ApplicationCommandInteraction, Имя_Фамилия: str, CID: str): try: cursor.execute('SELECT * FROM identificator WHERE cid = ?', (CID,)) existing_user = cursor.fetchone() if existing_user: embed = disnake.Embed(title="Ошибка", description="Уже существует жетон зарегистрированнный для этого CID", color=disnake.Color.red()) await self.response.send_message(embed=embed) connection.close() return check_db = cursor.execute('SELECT * FROM identificator WHERE token = ?', (final_number,)) number_in_database = cursor.fetchone while number_in_database: random_number = random.randint(0, 99999999) formatted_number = f'{random_number:08d}' final_number = f'{formatted_number[:4]}-{formatted_number[4:]}' number_in_database = check_db(final_number) cursor.execute('INSERT INTO identificator (nickname, cid, token) VALUES (?, ?, ?)', (Имя_Фамилия, CID, final_number)) connection.commit() connection.close() embed = disnake.Embed(title="Жетон успешно создан. Вот ваш жетон", description=f"/do На груди закреплен жетон: [Организация | Звание | {final_number}]", color=disnake.Color.green()) await self.response.send_message(embed=embed) except Exception as e: embed = disnake.Embed(title="Ошибка", description=f"Произошла ошибка при выполнении команды: {e}", color=disnake.Color.red()) await self.response.send_message(embed=embed) def setup(bot: commands.Bot): bot.add_cog(Idenificator(bot))

Дополнительно:

Ответы:

сheck_db = cursor.execute('SELECT * FROM identificator WHERE token = ?', (final_number,))

сheck_db = cursor.execute('SELECT * FROM identificator WHERE token = ?', (final_number,))

Чему равна переменная final_number в этот момент?

check_db(final_number)
Где определена функция check_db?

  • Значит я напутал что то. Задумка была в том чтобы он генерировал рандомное число до момента создания того числа, которого нет в базе. Если поможет скорректировать код, то буду вам очень признателен
  • toxa_sheben,
    - сheck_db = cursor.execute('SELECT * FROM identificator WHERE token = ?', (final_number,)) + def сheck_db(token): +     cursor.execute('SELECT 1 FROM identificator WHERE token = ?', (token,)) +     return cursor.fetchone() is not None

    - сheck_db = cursor.execute('SELECT * FROM identificator WHERE token = ?', (final_number,)) + def сheck_db(token): + cursor.execute('SELECT 1 FROM identificator WHERE token = ?', (token,)) + return cursor.fetchone() is not None

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Павел Админов Ответ

Для того чтобы вставить данные в таблицу через SQL команду, необходимо убедиться, что запрос правильно сформулирован и все необходимые параметры указаны.

Возможные причины, по которым вставка данных не работает, могут быть следующими:

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

INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);

INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);

2. Отсутствие необходимых прав доступа к базе данных. Убедитесь, что у вас есть права на выполнение операции вставки данных в указанную таблицу.

3. Неверные данные для вставки. Проверьте, что значения, которые вы пытаетесь вставить, соответствуют типам данных и ограничениям, установленным для столбцов таблицы.

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

Если после проверки всех вышеперечисленных причин проблема не решается, попробуйте выполнить запрос напрямую в среде управления базой данных, такой как phpMyAdmin или MySQL Workbench, чтобы увидеть более подробные сообщения об ошибках.

Надеюсь, что эти рекомендации помогут вам решить проблему с вставкой данных в таблицу через SQL команду.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно