Проблемы с подключением к базе данных 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 для подключения к вашей локальной виртуальной машине.