python - 链接 python app docker 和 postgres docker

标签 python postgresql 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:最新

我已经在我的 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 - 但我不确定该值应该是多少

最佳答案

基于documentation DATABASE_URL 环境变量应该是这样的:postgresql://postgres:xyz@postgres:5432/postgres

关于python - 链接 python app docker 和 postgres docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54473765/

相关文章:

python - 直接从协程调用Python的协程

python - 如何使 odoo 计算关系字段在导入时自行计算?

postgresql - ArcMap Union 的 PostGIS 等价物

python - Django 中最简洁的方法是在数据库中制作对象的修改副本

python - 将文件上传到 FastAPI 时如何使用 HTML 复选框发送可选参数?

sql - 不同的 WHERE 子句取决于子查询结果

postgresql - 无法将 struct 元素分配为 Google/uuid 数据类型

python - 使用基础镜像和使用 apt 有什么区别?

docker - 如何使用 "Docker Quickstart Terminal"启动另一台 docker-machine?

windows - 带符号链接(symbolic link)的 Git init