В документации к sqlite3 для защиты от sql-инъекций рекомендуется передавать данные в таблицу, используя заполнители "?", таким образом:
sql.execute(f"INSERT INTO Users VALUES (?, ?, ?, ?)", (user_id, user_name, first_name, lest_name))
В таблице имеются поля, которые могут оставаться пустыми или заполняются значениями по умолчанию. Как не передавать некоторые столбцы? Выбрасывает исключение:
sqlite3. ProgrammingError: Incorrect number of bindings supplied.
The current statement uses 5, and there are 4 supplied.