В моем пароле к СУБД присутствует символ @ и из-за этого не могу выполнить подключение sqlalchemy на python
Используя нижеприведенный код я получаю ошибку sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name "123@localhost" to address: Unknown server error
engine = 'postgresql://username:password@localhost:5432/mydatabase'
Если задать параметры отдельно, используя такой код, ошибка остается таже самая
DATABASE = 'postgres'
USER = 'postgres'
PASSWORD = 'adssa@123'
HOST = 'localhost'
PORT = '5432'
connection_string = f'postgresql://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}'
В приложении куда я хочу внедрить подключение sqlalchemy на данный момент используется psycopg2, подскажите, пожалуйста, как мне правильно выполнить подключение к БД?
Пароль создавался не мной и изменить его не могу.
Рабочий код подключения к psycopg2 в моем приложении
params = {
"host": "localhost",
"port": 5432,
"user": "postgres",
"password": "adssa@123",
"database": "postgres"
}
# Функция подключения к БД
def get_connection():
with psycopg2.connect(**params) as conn:
return conn
# Функция выполнения запроса
def execute_query(query, params=None):
conn = get_connection()
# создание объекта курсора для запуска команд PostgreSQL в базе данных
cur = conn.cursor()
# запрос
cur.execute(query, params)
# Для получения доступа к сформированной выборке используем cur.fetchall()
rows = cur.fetchall()
# закрытие курсора
cur.close()
# закрытие соединения
conn.close()
return rows