Возможен ли бэкенд Django PostgreSQL без использования psycopg2? Ограничения развертывания cPanel и виртуального хостинга

Я развертываю проект Django в среде хостинга cPanel (NameCheap).

В настоящее время NameCheap поддерживает только PostgreSQL: 8.4.20.

Я хочу использовать PostgreSQL в качестве серверной части базы данных Django, но (см. требование жирным шрифтом):

Текущая реализация psycopg2 поддерживает:

  • Python версии 2.7
  • Python 3 версии от 3.4 до 3.8
  • Версии сервера PostgreSQL с 7.4 по 12
  • Клиентская библиотека PostgreSQL версии 9.1

Обновление с 8.4.20 до >= 9.1 недоступно в NameCheap (план общего хостинга).

Итак, моя проблема в том, что если я пытаюсь выполнить pip install psycopg2, я получаю сообщение об ошибке:

./psycopg/psycopg.h:30:2: error: #error "Psycopg requires
PostgreSQL client library (libpq) >= 9.1

ПОТОМУ ЧТО PostgreSQL 8.4.20 ‹ PostgreSQL: 9.1.

Мой вопрос:

Является ли psycopg2 единственным "одобренным"(?)/"официальным"/"поддерживаемым" модулем для Django и PostgreSQL? Если нет, то какой альтернативный пакет psycopg2 я мог бы использовать и как его реализовать в целом?


person Jarad    schedule 20.12.2019    source источник
comment
Обратите внимание на текущую реализацию; Вы пытались установить версию, которая соответствует вашему Postgres?   -  person jonrsharpe    schedule 20.12.2019
comment
Для psycopg2 нет версии, поддерживающей PostgreSQL: 8.4.20. Так да.   -  person Jarad    schedule 20.12.2019
comment
PosgreSQL 8.4 — древний. Первоначально он был выпущен в 2009 году, а срок его службы истек в 2014 году. Он не поддерживался более пяти лет. Возможно, вы сможете использовать древнюю версию Django для своей древней базы данных, но, честно говоря, вам следует попытаться переключиться на лучший хост, который не заставит вас запускать древнее программное обеспечение, которое не получало обновлений безопасности в течение многих лет.   -  person Vinay Pai    schedule 20.12.2019
comment
@VinayPai Спасибо за контекст! Я не знал об этом.   -  person Jarad    schedule 20.12.2019


Ответы (2)


Я также пытался использовать базу данных PostgreSQL с Django на виртуальном хостинге Namecheap. У меня были проблемы в начале, но теперь я использую его без проблем. Вот процедура, которой вы можете следовать, чтобы использовать базу данных PostgreSQL с Django на виртуальном хостинге (хотя я использую psycopg2):

  1. Разверните приложение Django как обычно, за исключением части базы данных.
  2. Создайте базу данных PostgreSQL. Запишите его имя, а также имя пользователя и пароль пользователя, которого вы к нему добавили.
  3. Запустите терминал в CPanel (можно также через SSH), войдите в виртуальную среду и выполните следующую команду для установки psycopg2 (бинарный дистрибутив):
    pip install psycopg2-binary
  1. Теперь отредактируйте файл settings.py и добавьте следующие конфигурации для базы данных:
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'database_name',
    'USER': 'database_username',
    'PASSWORD': 'database_password',
    'HOST': '127.0.0.1',
    'PORT': '5432',
}

Обязательно используйте 127.0.0.1 вместо localhost.

  1. Ваша база данных настроена. Перезапустите приложение Python, выполните миграцию и т. д.

Я использую Python 3.7 и Django 3.0.

Я также написал об этом сообщение в своем блоге.

person Umer Softwares    schedule 30.12.2019
comment
Я только что протестировал ваше решение, и psycopg2-binary у меня сработало. Установил последнюю версию. - person Jarad; 01.01.2020

Вы можете установить psycopg 2.6.2. Libpq >= 9.1 требуется только с версии psycopg 2.7.

Попробуйте pip install "psycopg2<2.7".

person piro    schedule 26.12.2019