Невозможно подключиться к Postgresql, работающему через другой порт, используя Python - PullRequest
1 голос
/ 22 февраля 2020

У меня Postgres запущен и работает на одной из моих машин. Его pg_hba.conf содержит следующую строку:

host    all             all             0.0.0.0/0               md5

И postgresql.conf содержит следующие строки:

listen_addresses = '*'
port = 5433

Устройство в моей локальной сети имеет этот IP-адрес 192.168.234.137. Я пытаюсь подключиться к Postgres с другой машины. Если я использую, например, Navicat, то я могу легко установить sh соединение, так что Postgres, работающий на порту 5433, достижимо. Однако, когда я пытаюсь подключиться к нему с помощью Python, я получаю сообщение об ошибке

Is the server running on host "192.168.234.137" and accepting
TCP/IP connections on port 5433?

Если я переключаюсь обратно на порт 5432 - исправлю postgresql.conf и перезапустите Postgres - тогда мой Python скрипт начинает работать. Похоже, что Python (я пробовал psycopg2 и sqlalchemy) по какой-то причине связан с этим 5432 номером порта и не принимает другие номера портов. Что не так с этим и как я могу это исправить? Я думаю, просто изменить postgresql.conf и перезапустить Postgres недостаточно.

PS.

Код, который я запускаю, выглядит так:

>>> connection = psycopg2.connect(user = "postgres",
...                                   password = "postgres",
...                                   host = "192.168.234.137",
...                                   port = "5433",
...                                   database = "test")
Traceback (most recent call last):
  File "<stdin>", line 5, in <module>
  File "C:\Python34\lib\site-packages\psycopg2-2.6.1-py3.4-win-amd64.egg   \psycopg2\__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
    Is the server running on host "192.168.234.137" and accepting
    TCP/IP connections on port 5433?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2020

Порт должен быть указан как целое число, а не строка. Когда метод connect () был изменен на следующий, он работал.

>>> connection = psycopg2.connect(user = "postgres",
...                                   password = "postgres",
...                                   host = "192.168.234.137",
...                                   port = 5433,
...                                   database = "test")
0 голосов
/ 23 февраля 2020

Каково ваше утверждение в Python?

Вы должны указать порт:

con = psycopg2.connect(database="postgres", user="postgres", password="", host="127.0.0.1", port="5433")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...