Я постоянно получаю эту ошибку :
AttributeError
AttributeError: у объекта «NoneType» нет атрибута «getconn»
Я инициализировал пул соединений, который создается успешно, но когда я пытаюсь для запроса к базе данных, я получаю эту ошибку. Я без проблем протестировал запрос к базе данных из командной строки и проверил статус своего экземпляра RDS, который был «доступен».
Это мой маршрут входа:
Код: Выделить всё
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
authenticated, user_to_login = authenticate_user(username, password)
if authenticated:
login_user(user_to_login)
# Redirect based on role
if user_to_login.role == 'admin':
return redirect(url_for('adminPage'))
elif user_to_login.role == 'client':
return redirect(url_for('Clientpage'))
elif user_to_login.role == 'manager':
return redirect(url_for('managerPage'))
else:
return render_template('login.html')
else:
return render_template('login.html', error='Invalid username or password')
return render_template('login.html')
Код: Выделить всё
def init_db(targetDbName):
global connection_pool
db_credentials = get_secret() #tested function, which retireves correct values
USERNAME = db_credentials['username']
PASSWORD = db_credentials['password']
HOST = 'localhost' #since I am in dev
PORT = db_credentials['port']
connection_pool = psycopg2.pool.SimpleConnectionPool(
minconn=1,
maxconn=10,
user=USERNAME,
password=PASSWORD,
host=HOST,
port=PORT,
database=targetDbName #the name is correct
)
Код: Выделить всё
def authenticate_user(username, password):
try:
conn = connection_pool.getconn()
cursor = conn.cursor()
select_query = """
SELECT id, password, role FROM users WHERE username = %s
"""
cursor.execute(select_query, (username,))
user = cursor.fetchone()
if user:
id, db_password_hash, db_role = user
if check_password_hash(db_password_hash, password):
print("Success.")
print(id)
print(db_role)
user_to_login = User(id, username, db_role)
return True, user_to_login
else:
print("Wrong password.")
return False, None
else:
print("User not found.")
return False, None
except Exception as e:
print(f"Error: {e}")
return False, None
finally:
cursor.close()
conn.close()`
Спасибо за заранее за вашу помощь!
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-when-usi