Найти - Пользователи
Полная версия: psycopg : проверка подключения к серверу
Начало » Базы данных » psycopg : проверка подключения к серверу
1
vak
Подскажите как правильно проверить есть подключение к серверу или нет. Целиком : пользователь вводит пароль , ну и если есть связь с сервером - начинает работать , если связи нет - выдается сообщение о отсутствии подключения. Сейчас у меня это реализовано через запрос к функции (на стороне сервера), которая просто выдает ‘OK’, но должен быть более “правильный” способ, какой?
slav0nic
классика
select 1;

в mysql есть ping, pg_ping вроде есть в РНР но он скорей всего и делает select 1 )
vak
А применительно к psycopg есть решения?
Ed
Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:
import sys
import psycopg

try:
conn = psycopg.connect(database="test")
except OperationalError, exobj:
print "не могу подключиться к серверу. ошибка:", exobj
sys.exit(1)

print "подключились, работаем"
slivlen
Ed
Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:
Это решение далеко не всегда спасает. Если программа будет работать длительное время, то сервер БД может закрыть соединение в случае долгого его бездействия по таймауту. Поэтому ИМХО единственный приемлемый вариант - тот что предложил slav0nic.
pythonwin
согласен с slivlen.
для обработки этого случая можно использовать:
try:
cursor1.execute("select 1;")
except psycopg2.ProgrammingError, msgs:
...
except psycopg2.extensions.QueryCanceledError, msgs:
...
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB