【问题标题】:psycopg2.OperationalError: could not connect to server: Connection refusedpsycopg2.OperationalError:无法连接到服务器:连接被拒绝
【发布时间】:2018-10-12 07:16:41
【问题描述】:
import os
import datetime
from flask import Flask, render_template, redirect, url_for
#from database import DatabaseConnection
#from models import kayıt
from forms import LoginForm
import psycopg2 as p

conn=p.connect(dbname='app_db', user='postgres', host='localhost', password='samet', port=5432)
conn.autocommit=True
cur=conn.cursor()   

连接线

psycopg2.OperationalError: could not connect to server: Connection refused

使用; PostgreSQL:9.6.5 蟒蛇:3

如果我只用信息运行 postgre,但它没有在 python 中运行

谢谢

对不起,我应该解释得更清楚一点。我正在和一个码头工人打交道。我有 3 个容器,但我正在尝试通过 PostgreSQL 使用 python 容器。我想为此使用 psycopg2。但是我遇到了这样的错误。我的登录信息是正确的。我查过了。

【问题讨论】:

  • 您检查您的postgresql service 是否运行良好?如果它启动并运行,那么问题可能是因为错误的credentials
  • 您是否在与 postgres 相同的容器中运行您的 python 代码?如果不是,您需要确保在各种容器之间桥接端口,docker-compose 让这一切变得简单

标签: python postgresql docker docker-compose


【解决方案1】:

你确定你传递给psycopg2connect函数的所有参数都是正确的吗?

conn=p.connect(dbname='app_db', user='postgres', host='localhost', password='samet', port=5432)

数据库名称、用户名、主机、密码和端口都可能不正确。

【讨论】:

  • 我的登录信息正确。我检查了。我的登录信息是正确的。我查过了。
  • 你肯定忽略了一些东西。
【解决方案2】:

想办法解决这个问题:

根据this answer

Postgres 没有在与烧瓶相同的容器中运行 应用程序,这就是为什么它不能通过 localhost 访问的原因。我们应该 用flask找到docker容器的IP地址并添加,或者 只需添加 Postgres 或 volume_name 代替 localhost。

所以你的连接应该是这样的:

conn=p.connect(dbname='app_db', user='postgres', host='volume_name_of_postgres_in_docker_compose', password='samet', port=543

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2020-07-27
    • 2020-12-09
    • 1970-01-01
    • 2013-11-18
    相关资源
    最近更新 更多