В вашем коде есть несколько ошибок и недочетов, которые нужно исправить, чтобы обеспечить корректную работу проверки идентификатора пользователя. Вот основные задачи, которые нужно выполнить:
1. **Вызывать функцию `check_adm` правильно**. В вашем коде вы сравниваете `check_adm` как функцию с переменной `admiss`, что неправильно. Вам следует вызывать функцию и сохранять результат.
2. **Использовать параметризованные запросы для предотвращения SQL-инъекций**. Вместо того чтобы форматировать строку запроса непосредственно, лучше использовать параметры, чтобы избежать уязвимостей.
3. **Исправить условие в `main()`**. Убедитесь, что вы проверяете возвращаемое значение функции `check_adm`.
Вот исправленный код:
```python
import sqlite3
admiss = 4545454446
def check_adm():
databaseFile = "data.db"
db = sqlite3.connect(databaseFile, check_same_thread=False)
cursor = db.cursor()
print(f"d {admiss}")
# Используем параметризованный запрос
cursor.execute('SELECT * FROM admin WHERE auser_id = ?', (admiss,))
# Проверяем результат
if cursor.fetchone() is None:
return False
else:
return True
def main():
print("Выполняется проверка системы...")
if not check_adm(): # Здесь вызываем функцию и проверяем ее результат
print("Error")
quit()
else:
print("Проверка прошла успешно.")
if __name__ == '__main__':
main()
```
### Что изменилось:
1. **Параметризованный запрос**: Теперь запрос к базе данных выглядит так: `cursor.execute('SELECT * FROM admin WHERE auser_id = ?', (admiss,))`. Это предотвратит SQL-инъекции.
2. **Проверка результата**: В `main()` теперь используется `if not check_adm()`, что обеспечит корректное сравнение.
3. **Код стал более читаемым**.
Попробуйте запустить этот исправленный код и проверьте, исчезли ли проблемы.