Bubalgum
Сен. 6, 2017 16:29:25
Доброго времени суток!
Не знаю в какую ветку писать то ли в django то ли БД.
Чтобы не вдаваться в историю о том, что проект был на sqllite, а потом решили перевести на postgres, опущу и перейду к делу.
Была проинсталлирована БД postgres выданы логин, пароль, ip.
Был создан новый проект django. В инете полно мануалов как подключить. Были просмотрены если не все то большинство. Результат один ошибка “django.db.utils.OperationalError”
Подумал ладно возможно даже в новом проекте, что то не так, упростил до ввода двух команд в консоле:
>>>import psycopg2
>>> conn = psycopg2.connect(“dbname='db' user='user' host='указан IP' password='pass'”)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “C:\Users\Администратор\source\repos\DjangoWebProject1\DjangoWebProject1\envTEST\lib\site-packages\psycopg2\__init__.py”, line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError
>>>
Программы администрирования типа pgAdmin цепляются с такими настройками на ура.
Подскажите, что не так, куда смотреть, где копать?
Спасибо!
FishHook
Сен. 6, 2017 17:26:46
Bubalgum conn = psycopg2.connect(dbname="test", user="postgres", password="secret", host="host", port ="port")
Bubalgum
Сен. 6, 2017 18:09:56
Понимаю, что раз ошибка в подключении и за подключение отвечает одна строка то проблема в ней.
Пробовал убирать все параметры “connect” и запускать смотреть на ошибку. Используя только dbname и user, выдал ошибку не указан ip. Добавил ip, выдал ошибку не указан пароль. Добавил пароль. Выдает ошибку описанную выше. т.е. пока не указаны правильно параметры, ругается на них. Как только прописываешь все параметры верно, появляется ошибка psycopg2.OperationalError. Порт, что указываешь, что не указываешь ни на что не влияет.
Учитывая, что здесь особо перебирать нечего, думаю, что ошибка связана либо с версионностью библиотеки и БД, либо с настройками самой БД.
Что нужно настроить обязательно в postgres для работы с django?
FishHook
Сен. 6, 2017 19:17:26
Да ничего не надо настраивать, расскажите по шагам как устанавливали psycopg2
Bubalgum
Сен. 7, 2017 07:14:24
работаю в visual studio 2017.
Вкладка окружение python, в ней выбираю само окружение. В выпадающем меню выбрал “пакеты”. После выбора “пакеты” в строке поиска набрал psycopg2. Он нашел кучу где в названии есть psycopg2. Выбрал пакет просто psycopg2 без всего версии 2.7.3.1. Нажал установить. В окне вывода увидел pip instal psycopg2. После успешной установки. в разделе пакеты помимо django, pip появился еще и psycopg2.
И все.
FishHook
Сен. 7, 2017 08:13:00
BubalgumОх, не стал бы я доверять студии!
Вообще, с пакетами, зависящими от бинарников бывают всякие разные нюансы. Для винды есть инсталляторы, удалите все что уже наустанавливали через pip и попробуйте рекомендованный производителем способ установки
http://www.stickpeople.com/projects/python/win-psycopg/ПС: внимательно прочитайте то, что по ссылке, особенно в самом низу
Bubalgum
Сен. 7, 2017 09:18:40
Решил сделать так. Взял другую машину проинсталировал python, django, win-psycopg2.
в cmd запустил консоль python и там выполнил импорт psycopg2 и конект. Ошибка осталась.
Завел в БД другого пользователя и обнаружил если ошибиться или написать все, что хочешь в любом параметре то конект выдает ошибку. Он смотрит чтобы параметр был написан, а уж верны ли в нем данные его не касаются. единственный параметр на который он точно ругается это host если там указать неверный ip то он и выдает, что адрес указан не правильно, на все остальные параметры ему начихать.
FishHook
Сен. 7, 2017 10:15:13
Ну собственно, на свежей виртуалке просто через pip установил psycopg2 и вроде все работает
постгреса у меня тут нет, но я думаю все бы сконнектилось
Bubalgum
Сен. 7, 2017 10:51:26
К сожалению не факт. У меня так же ругается если указываю неправильный ip или ip, но там где нет postgres.
FishHook
Сен. 7, 2017 11:12:14
Bubalgum
У меня так же ругается если указываю неправильный ip или ip, но там где нет postgres.
Что-то я вас перестал понимать. Не должно ругаться или что?