链接 python 应用程序 docker 和 postgress docker

我有两个通过以下命令运行的 docker 容器:


docker run --name postgres -v "/Users/xxx/Desktop/Coding/DockerMounting":/home/ -e POSTGRES_PASSWORD=xyz -d postgres


docker run -it -v "/Users/xxx/Desktop/Coding/DockerMounting":/home/t -p 5000:5000 --name some-app --link postgres:postgres -d xxx/ubuntu:latest


我已经在我的 postgres (psql) 容器中创建了必要的用户、数据库和表。


我正在尝试运行 python 脚本:


import os


from sqlalchemy import create_engine

from sqlalchemy.orm import scoped_session, sessionmaker


engine = create_engine(os.getenv("DATABASE_URL"))

db = scoped_session(sessionmaker(bind=engine))


def main():

    flights = db.execute("SELECT origin, destination, duration FROM flights").fetchall()

    for flight in flights:

        print(f"{flight.origin} to {flight.destination}, {flight.duration} minutes.")


if __name__ == "__main__":

    main()

我收到以下错误:


  File "list.py", line 6, in <module>

    engine = create_engine(os.getenv("DATABASE_URL"))

  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/__init__.py", line 435, in create_engine

    return strategy.create(*args, **kwargs)

  File "/usr/local/lib/python3.6/dist-packages/sqlalchemy/engine/strategies.py", line 56, in create

    plugins = u._instantiate_plugins(kwargs)

我知道一个问题是我需要设置 DATABASE_URL env - 但我不确定该值应该是多少


慕勒3428872
浏览 172回答 2
2回答

慕姐8265434

根据文档,DATABASE_URL环境变量应该是这样的:postgresql://postgres:xyz@postgres:5432/postgres

缥缈止盈

您需要在运行 Flask 应用程序的同一环境中指定 DATABASE_URL。这意味着如果您在 Windows 中从 CMD 运行它,则需要在运行 Flask 之前将其导出:setx&nbsp;DATABASE_URL&nbsp;"postgres://<user>:<password>@<host>:<port>/<DBname>"或者在Linux中:export&nbsp;DATABASE_URL=postgres://<user>:<password>@<host>:<port>/<DBname>(端口通常是 5432)然后运行您的应用程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python