Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 30, 2008 06:13:40

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

psycopg : проверка подключения к серверу

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



Офлайн

#2 Дек. 30, 2008 11:43:38

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

psycopg : проверка подключения к серверу

классика
select 1;

в mysql есть ping, pg_ping вроде есть в РНР но он скорей всего и делает select 1 )

Офлайн

#3 Янв. 3, 2009 17:04:42

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

psycopg : проверка подключения к серверу

А применительно к psycopg есть решения?



Офлайн

#4 Янв. 3, 2009 20:15:20

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

psycopg : проверка подключения к серверу

Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:

import sys
import psycopg

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

print "подключились, работаем"



Отредактировано (Янв. 3, 2009 21:11:59)

Офлайн

#5 Янв. 5, 2009 12:56:08

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

psycopg : проверка подключения к серверу

Ed
Самым простым будет попытаться приконнектиться и поймать исключение, которое оно сгенерит. что-нибудь типа такого:
Это решение далеко не всегда спасает. Если программа будет работать длительное время, то сервер БД может закрыть соединение в случае долгого его бездействия по таймауту. Поэтому ИМХО единственный приемлемый вариант - тот что предложил slav0nic.



Офлайн

#6 Янв. 6, 2009 08:09:45

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

psycopg : проверка подключения к серверу

согласен с slivlen.
для обработки этого случая можно использовать:

try:
cursor1.execute("select 1;")
except psycopg2.ProgrammingError, msgs:
...
except psycopg2.extensions.QueryCanceledError, msgs:
...



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version