Проблемы с подключением к базе данных MusicBrainz с помощью psycopg2

Я пытаюсь подключиться к базе данных MusicBrainz с помощью модуля Python psycopg2. Я следовал инструкциям, представленным на http://musicbrainz.org/doc/MusicBrainz_Server/Setup, но не могу подключиться. В частности, я использую следующий маленький скрипт:

import psycopg2
conn = psycopg2.connect( database = 'musicbrainz_db', user= 'musicbrainz', password = 'musicbrainz', port = 5000, host='10.16.65.250')
print "Connection Estabilished"

Проблема в том, что когда я запускаю его, он никогда не достигает оператора print, а консоль (я нахожусь на linux) блокируется бесконечно. Он даже не перехватывает ctrl-c kill, поэтому мне нужно убить самого python в другой консоли. Что может вызвать это?

1 ответ

Решение

Вы, кажется, ошибаетесь, что MusicBrainz-Server является только базой данных. На порте 5000 работает веб-сервер. Вы можете получить доступ http://10.16.65.250:5000 в браузере.

Postgres тоже работает, но слушает localhost:5432, Это работает:

import psycopg2
conn = psycopg2.connect(database="musicbrainz_db",
                        user="musicbrainz", password="musicbrainz",
                        port="5432", host="localhost")
print("Connection established")

Чтобы заставить postgres слушать больше, чем localhost, вам нужно изменить listen_addresses в /etc/postgresql/9.1/main/postgres.conf и сделайте запись для вашего (клиента) хоста или сети в /etc/postgresql/9.1/main/pg_hba.conf,

Моя виртуальная машина работает в сети 192.168.1.0/24, поэтому я установил listen_addresses='*' в postgres.conf и в pg_hab.conf:

host    all             all             192.168.1.0/24          trust

Теперь я могу подключиться из моей локальной сети к БД в ВМ.


В зависимости от того, что вам действительно нужно, вы можете не захотеть подключаться к серверу MusicBrainz через postgres. Существует веб-сервис MusicBrainz, к которому вы можете получить доступ в виртуальной машине. Пример: http://10.16.65.250:5000/ws/2/artist/c5c2ea1c-4bde-4f4d-bd0b-47b200bf99d6, В этом случае вас может заинтересовать библиотека для обработки данных: http://python-musicbrainzngs.readthedocs.org/.

РЕДАКТИРОВАТЬ: вам нужно установить musicbrainzngs.set_hostname("10.16.65.250:5000") для musicbrainzngs для подключения к вашей локальной виртуальной машине.

Другие вопросы по тегам