flask sqlalchemy 无法连接到密码验证失败的 postgres 数据库

问题描述 投票:0回答:0

我知道我错过了一些简单的东西,但我不知所措,厌倦了用头撞墙。

我有一个 Flask 应用程序,其中

DB_URI
存储在
.env
文件中,并且该变量被
config
文件调用。它工作,然后它停止工作。 我已经更新了 PgAdmin 和 Python 和 Flask 版本。我在应用程序中添加了一个模型,其中包含一些新关系,修改了现有关系。我已经在
python >>> with app.app_context() ... db.create_all()
中升级了数据库它似乎在终端中工作。我正在打电话
flask db migrate ...
,我得到了
sqlalchemy.exc.OperationalError
见下文:

  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 145, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 3275, in raw_connection     
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 455, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 1271, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 719, in checkout
    rec = pool._do_get()
          ^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\impl.py", line 283, in _do_get
    return self._create_connection()
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 396, in _create_connection    
    return _ConnectionRecord(self)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 681, in __init__
    self.__connect()
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 905, in __connect
    with util.safe_reraise():
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\util\langhelpers.py", line 147, in __exit__       
    raise exc_value.with_traceback(exc_tb)
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 901, in __connect
    self.dbapi_connection = connection = pool._invoke_creator(self)
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\create.py", line 640, in connect
    return dialect.connect(*cargs, **cparams)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\default.py", line 580, in connect
    return self.loaded_dbapi.connect(*cargs, **cparams)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\psycopg2\__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
psycopg2.OperationalError: connection to server at "localhost" (::1), port 5432 failed: FATAL:  password authentication failed for user "postgres"


The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\user\venv\Scripts\flask.exe\__main__.py", line 7, in <module>
  File "C:\Users\user\venv\Lib\site-packages\flask\cli.py", line 1050, in main
    cli.main()
  File "C:\Users\user\venv\Lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\click\core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\click\core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\click\decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\ishru\ligiteco\venv\Lib\site-packages\flask\cli.py", line 357, in decorator
    return __ctx.invoke(f, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\flask_migrate\cli.py", line 105, in migrate
    _migrate(directory, message, sql, head, splice, branch_label, version_path,
  File "C:\Users\user\venv\Lib\site-packages\flask_migrate\__init__.py", line 111, in wrapped
    f(*args, **kwargs)
  File "C:\Users\user\venv\Lib\site-packages\flask_migrate\__init__.py", line 170, in migrate
    command.revision(config, message, autogenerate=True, sql=sql,
  File "C:\Users\user\venv\Lib\site-packages\alembic\command.py", line 229, in revision
    script_directory.run_env()
  File "C:\Users\user\venv\Lib\site-packages\alembic\script\base.py", line 576, in run_env
    util.load_python_file(self.dir, "env.py")
  File "C:\Users\user\venv\Lib\site-packages\alembic\util\pyfiles.py", line 94, in load_python_file       
    module = load_module_py(module_id, path)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\alembic\util\pyfiles.py", line 110, in load_module_py        
    spec.loader.exec_module(module)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "C:\Users\user\migrations\env.py", line 96, in <module>
    run_migrations_online()
  File "C:\Users\user\migrations\env.py", line 81, in run_migrations_online
    with connectable.connect() as connection:
         ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 3251, in connect
    return self._connection_cls(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 147, in __init__
    Connection._handle_dbapi_exception_noconnection(
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2413, in _handle_dbapi_exception_noconnection
    raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
  File "C:\Users\ishru\ligiteco\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 145, in __init__
    self._dbapi_connection = engine.raw_connection()
                             ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\base.py", line 3275, in raw_connection     
    return self.pool.connect()
           ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 455, in connect
    return _ConnectionFairy._checkout(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 1271, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 719, in checkout
    rec = pool._do_get()
          ^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\impl.py", line 283, in _do_get
    return self._create_connection()
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 396, in _create_connection    
    return _ConnectionRecord(self)
           ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 681, in __init__
    self.__connect()
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 905, in __connect
    with util.safe_reraise():
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\util\langhelpers.py", line 147, in __exit__       
    raise exc_value.with_traceback(exc_tb)
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\pool\base.py", line 901, in __connect
    self.dbapi_connection = connection = pool._invoke_creator(self)
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\create.py", line 640, in connect
    return dialect.connect(*cargs, **cparams)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\sqlalchemy\engine\default.py", line 580, in connect
    return self.loaded_dbapi.connect(*cargs, **cparams)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\user\venv\Lib\site-packages\psycopg2\__init__.py", line 122, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) connection to server at "localhost" (::1), port 5432 failed: FATAL:  password authentication failed for user "postgres"

.flaskenv
文件:是这样的:

FLASK_APP=app
FLASK_DEBUG=True

.env
文件有:

DATABASE_URI='postgresql+psycopg2://postgres:[PASSWORD]@localhost/[DB_NAME]'

config.py
文件有:

class DevelopmentConfig(Config):
    DEVELOPMENT = True
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URI')

__init___.py
有:

    app = Flask(__name__,
                static_url_path='/',
                static_folder='../app/static',
                template_folder='../app/templates')
    app.config.from_object(config['default'])
    config['default'].init_app(app)

我错过了什么?

postgresql flask sqlalchemy flask-sqlalchemy flask-migrate
© www.soinside.com 2019 - 2024. All rights reserved.