vak
Дек. 30, 2008 06:13:40
Подскажите как правильно проверить есть подключение к серверу или нет. Целиком : пользователь вводит пароль , ну и если есть связь с сервером - начинает работать , если связи нет - выдается сообщение о отсутствии подключения. Сейчас у меня это реализовано через запрос к функции (на стороне сервера), которая просто выдает ‘OK’, но должен быть более “правильный” способ, какой?
slav0nic
Дек. 30, 2008 11:43:38
классика
select 1;
в mysql есть ping, pg_ping вроде есть в РНР но он скорей всего и делает select 1 )
vak
Янв. 3, 2009 17:04:42
А применительно к psycopg есть решения?
Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:
import sys
import psycopg
try:
conn = psycopg.connect(database="test")
except OperationalError, exobj:
print "не могу подключиться к серверу. ошибка:", exobj
sys.exit(1)
print "подключились, работаем"
slivlen
Янв. 5, 2009 12:56:08
Ed
Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:
Это решение далеко не всегда спасает. Если программа будет работать длительное время, то сервер БД может закрыть соединение в случае долгого его бездействия по таймауту. Поэтому ИМХО единственный приемлемый вариант - тот что предложил
slav0nic.
pythonwin
Янв. 6, 2009 08:09:45
согласен с
slivlen.
для обработки этого случая можно использовать:
try:
cursor1.execute("select 1;")
except psycopg2.ProgrammingError, msgs:
...
except psycopg2.extensions.QueryCanceledError, msgs:
...