Как отправить аргумент функции что бы он воспринимался pycharm при работе с sql?

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

Создаю тг бота с библиотекой aiorgam необходимо создавать бд,для этого обратился к библиотеке SQL.
Чтобы не загромождать основной код сделал отдельный файл с функциями обращения к SQL, и прочими необходимыми вещами. Когда вызывая функцию записи в БД выдает ошибку

TypeError: db_table_val() missing 1 required positional argument: 'date'

TypeError: db_table_val() missing 1 required positional argument: 'date'

Сам основной код

import sqlite3 as sq from aiogram import Bot, Dispatcher, executor, types from table_sql import  create, db_table_val, add_data  bot = Bot(token=API_TOKEN) dp = Dispatcher(bot, storage=storage)  con = sq.connect('databased.db') cur = con.cursor() con.execute(f"""CREATE TABLE IF NOT EXISTS users (user_id, username)""") con.commit() @dp.message_handler(commands=['start']) async def start_bot(message: types.Message):     await bot.send_message(message.from_user.id, text='the bot started' )     await bot.send_message(chat_id=admin, text='the bot started '                                                 +"n @"+str(message.from_user.username ))     db_table_val(message.from_user.id, message.from_user.username, message.date)

import sqlite3 as sq from aiogram import Bot, Dispatcher, executor, types from table_sql import create, db_table_val, add_data bot = Bot(token=API_TOKEN) dp = Dispatcher(bot, storage=storage) con = sq.connect('databased.db') cur = con.cursor() con.execute(f"""CREATE TABLE IF NOT EXISTS users (user_id, username)""") con.commit() @dp.message_handler(commands=['start']) async def start_bot(message: types.Message): await bot.send_message(message.from_user.id, text='the bot started' ) await bot.send_message(chat_id=admin, text='the bot started ' +"n @"+str(message.from_user.username )) db_table_val(message.from_user.id, message.from_user.username, message.date)

И код функции

import sqlite3 as sq import aiogram  con = sq.connect('databased.db') cur = con.cursor() sq.connect('databased.db') as con: con.execute(f"""CREATE TABLE IF NOT EXISTS {message.from_user.username} (user_id, username, date)""") con.commit() def db_table_val(message, user_id, username, date:str ):         cur.execute(f'INSERT INTO {message.from_user.username} (user_id, username, date) VALUES (?, ?, ?)',                        (user_id, username, date))          con.commit()

import sqlite3 as sq import aiogram con = sq.connect('databased.db') cur = con.cursor() sq.connect('databased.db') as con: con.execute(f"""CREATE TABLE IF NOT EXISTS {message.from_user.username} (user_id, username, date)""") con.commit() def db_table_val(message, user_id, username, date:str ): cur.execute(f'INSERT INTO {message.from_user.username} (user_id, username, date) VALUES (?, ?, ?)', (user_id, username, date)) con.commit()

При этом если не записывать функцию в отдельном файле все работает нормально.

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

Это очень плохая структура БД
Никогда нельзя делать таблицы из имени пользователя.
Таблица должна быть только одна, в которой лежат сообщения всех пользователей .

  • Роман Юрьевич Ипатьев, а почему нельзя делать таблицы из имени пользователя?
  • Алан Гибизов, потому что имя пользователя - это данные, а не их структура
  • У вас же в функцию db_table_val должно передаться 4 аргумента, а Вы передаете в основной функции только 3, о чем и говорить ошибка

    • все на столько банально, благодарю
    Нужно решить такую задачу?

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

    Заказать помощь
    Лучший ответ
    1
    Мария Код Ответ

    Для того чтобы отправить аргумент функции так, чтобы он правильно воспринимался PyCharm при работе с SQL, вам следует учитывать следующие моменты:

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

    2. Если вы используете переменные в запросе SQL, убедитесь, что они экранированы правильно, чтобы избежать SQL-инъекций.

    3. При передаче аргумента функции, укажите правильный тип данных, чтобы PyCharm мог правильно интерпретировать его. Например, для строковых значений используйте тип данных str, для числовых - int или float.

    Пример использования аргумента функции в SQL запросе в Python:

    def execute_sql_query(query: str):
        # здесь выполняется подключение к базе данных и выполнение запроса
        pass
     
    # Пример вызова функции с передачей SQL запроса
    query = "SELECT * FROM table_name WHERE column_name = 'value'"
    execute_sql_query(query)

    def execute_sql_query(query: str): # здесь выполняется подключение к базе данных и выполнение запроса pass # Пример вызова функции с передачей SQL запроса query = "SELECT * FROM table_name WHERE column_name = 'value'" execute_sql_query(query)

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

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

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

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

    комментарий

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

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