Форум сайта python.su
Мой скрипт принимает значения имени и пароля от пользователя и нужно их сравнивать со значениями в БД.
#!/usr/bin/python import MySQLdb import getpass print("-------------------------") print("<<<<<<<<<Welcome>>>>>>>>>") print("-------------------------") username = input("Username:") if username == "username" : password = getpass.getpass(prompt="Enter secret password:") else : print ("please try another user name. This user name is incorrect") print password # Open database connection db = MySQLdb.connect("hostname","user,"pass","db" ) # prepare a cursor object using cursor() method cursor = db.cursor() # execute SQL query using execute() method. cursor.execute("SELECT userID, password from db") # Fetch a single row using fetchone() method. data = cursor.fetchone() # disconnect from server db.close()
id int(11) Автоматическое приращение userID bigint(12) unsigned password varchar(32) PointsQuota tinyint(3) Period tinyint(2) deviceID char(17) user_phone bigint(20) email varchar(128) enable tinyint(2) ssh_port int(5)
Офлайн
Выполни
cursor.execute("SELECT userID, password from db") data = cursor.fetchone() print(data)
cursor.execute("SELECT userID, password from db") data = cursor.fetchone() dbuser, dbpass = data if username == dbuser and password == dbpass: print('Ok') else: print('Fail')
Онлайн
спасибо, но модуль mysqldb не найден и почему-то не устанавливается:
# ./auth.py Traceback (most recent call last): File "./auth.py", line 5, in <module> import MySQLdb ImportError: No module named MySQLdb
# pip3 install MySQLdb ERROR: Could not find a version that satisfies the requirement MySQLdb (from versions: none) ERROR: No matching distribution found for MySQLdb
# pip3 install mysqldb ERROR: Could not find a version that satisfies the requirement mysqldb (from versions: none) ERROR: No matching distribution found for mysqldb
Офлайн
Офлайн
спасибо, изменил таким образом:
#!/usr/bin/python import getpass import pymysql print("-------------------------") print("<<<<<<<<<Welcome>>>>>>>>>") print("-------------------------") username = input("Username:") if username == "username" : password = getpass.getpass(prompt="Enter secret password:") else : print ("please try another user name. This user name is incorrect") print password db = pymysql.connect("hostname","user,"pass","db") # prepare a cursor object using cursor() method cursor = db.cursor() cursor.execute("SELECT userID, password from permissions") data = cursor.fetchone() print(data)
>>> cursor.execute("SELECT userID, password from permissions") 1 >>> print(data) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'data' is not defined
Офлайн
ffrr
А зачем ты к посту код прилепил, если по факту выполняешь не его?
У тебя к коде
cursor.execute("SELECT userID, password from permissions") data = cursor.fetchone() print(data)
>>> cursor.execute("SELECT userID, password from permissions") 1 >>> print(data)
data = cursor.fetchone()
Офлайн
да, спасибо за уточнение, моя ошибка.
Офлайн
теперь почему-то не срабатывает блок с запросом ввода пароля, хотя ввожу username такой же как userID в БД:
# ./auth.py ------------------------- <<<<<<<<<Welcome>>>>>>>>> ------------------------- Username:659605758501 (659605758501, '202cb962ac59075b964b07152d234b70') 659605758501 659605758501 please try another user name. This user name is incorrect Fail
#!/usr/bin/env python3.8 import getpass import pymysql print("-------------------------") print("<<<<<<<<<Welcome>>>>>>>>>") print("-------------------------") username = input("Username:") db = pymysql.connect("hostname","user,"pass","db") # prepare a cursor object using cursor() method cursor = db.cursor() cursor.execute("SELECT userID, password from permissions") data = cursor.fetchone() dbuser, dbpass = data print(data) print(dbuser) print(username) if username == "dbuser" : password = getpass.getpass(prompt="Enter secret password:") else : print ("please try another user name. This user name is incorrect") if username == dbuser and password == dbpass: print('Ok') else: print('Fail')
Офлайн
т.е. почему-то не срабатывает условие:
if username == dbuser : password = getpass.getpass(prompt="Enter secret password:")
Офлайн
ffrr
Ты пишешь программу, очевидно, что она не заработает с первого раза как ожидается. Ни у кого в мире не получается программировать чисто, писать код без ошибок и глупостей с первого раза. Никогда. Просесс отладки программы всегда занимает времени больше, чем собственно написание кода. Надо учиться отлаживать. Хотя бы самым примитивным способом. Вот что мешает взять, и перед строкой if username == dbuser вывести переменные на экран? Ну тупо чтобы убедиться, что они и правда равны, а это не ты забыл капс лок выключить. Это же элементарные, прям стартовые вещи.
Офлайн