Как отправить аргумент функции что бы он воспринимался pycharm при работе с sql?
Создаю тг бота с библиотекой 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, о чем и говорить ошибка
- все на столько банально, благодарю
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы отправить аргумент функции так, чтобы он правильно воспринимался 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)
При соблюдении указанных выше рекомендаций, вы сможете успешно отправить аргумент функции, который будет правильно восприниматься PyCharm при работе с SQL.