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 шт):
выходят не понятные ошибки
Что же непонятного в сообщении:
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')
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)
Сделал метод в главном классе который находится в другом файле и все работает =)