Python как создать и вызвать метод который будет парсить список

    import pypyodbc

    class MagSQL ():
        mybd = 'test'
        fuckname = ''

        connection = pypyodbc.connect('Driver={SQL Server};'
                                      'Server=DESKTOP-LSIALCG\SQLEXPRESS;'
                                      'Database=' + mybd + ';')
        cursor = connection.cursor()

        mySQLQuery = ("SELECT First, Name, password FROM dbo.Test01")
        cursor.execute(mySQLQuery)
        fuckname = cursor.fetchall()
        cursor.close()

        for row in fuckname:
            first = row[0]
            name = row[1]
            passwordbd = row[2]
            print(passwordbd)

        def check_password(pask):
            for row in fuckname:
                if str(row[2]) == pask:
                    print('yes')

        print(fuckname)
        check_password('1234')
        print(fuckname)

Что я получаю --------------------------------------------

    1234
    3333
    2222
    [('алекссев', 'вова', 1234), ('Лемешкин', 'андрей', 3333), ('Вигаев', 'данил', 2222)]
        Traceback (most recent call last):
      File "C:/Users/Keeplod/PycharmProjects/testbd2/venv/connectSQL.py", line 3, in <module>
        class MagSQL ():
      File "C:/Users/Keeplod/PycharmProjects/testbd2/venv/connectSQL.py", line 30, in MagSQL
        check_password('1234')
      File "C:/Users/Keeplod/PycharmProjects/testbd2/venv/connectSQL.py", line 25, in check_password
        for row in fuckname:
    NameError: name 'fuckname' is not defined
    Process finished with exit code 1

Доброго времени суток, подскажите не опотному, почему вызывая метод check_password('1234') выходятне не понятные ошибки за место 'yes'


Ответы (2 шт):

Автор решения: Sergey

выходят не понятные ошибки

Что же непонятного в сообщении:

NameError: name 'fuckname' is not defined

? А вот почему имя 'fuckname' не определено - это отдельный вопрос. Очевидно, что проблемы с областью видимости. Скажите, а зачем Вы определяет class MagSQL? И почему в Вашей программе нигде не определяется ни одного объекта этого класса?

Короче говоря: очень сложно понять, что Вы имели в виду во время написания кода. Я предлагаю Вам просто выбросить строчку заголовка класса и сдвинуть весь текст на один "таб" влево.

По поводу Вашего коммента:

стоит только сделать все так же но только в методе check_password так сразу появляются ошибки

Посмотрите внимательно на свой код:

def check_password(pask):
            for row in fuckname:
                if str(row[2]) == pask:
                    print('yes')

Что такое тут fuckname ? Это не параметр и не локальная переменная метода check_password... Это глобальная переменная из объемлющего метода? Но тогда она должна быть описана так:

def check_password(pask):
            global fuckname
            for row in fuckname:
                if str(row[2]) == pask:
                    print('yes')
→ Ссылка
Автор решения: Keeplod
def check_pass(self):
    if len(self.ui.label.text()) >= 4:
        for fox in MagSQL.fuckname:
            name = fox[1]
            name = name + ' ' + fox[0] + ' '
            pac = fox[2]
            print(name, pac)

Сделал метод в главном классе который находится в другом файле и все работает =)

→ Ссылка