Проблема с установкой базы данных Postgresql в django - PullRequest
0 голосов
/ 03 ноября 2019

У меня проблема с базой данных postgresql в dajngo. Когда я запускаю команду "python -m pip install psycopg2", это работает. Поэтому я запускаю команду "pym manage.py makemigrations", у меня есть следующие проблемы:

команда result1 команда result2

Но когда я запускаю команду "pip freeze", это результат:Джанго == 2.2.6psycopg2 == 2.8.4pytz == 2019,3sqlparse == 0.3.0

И это мой файл settings.py (база данных): my settings.py - база данных

Это моя конфигурация:

Windows 10 64 бит- Джанго 2.2.6- Psycopg2 2.8.4- Postgresql 12- пункт 19.3.1

И C: \ XXX \ PostgreSQL \ 12 \ bin находится в моем ПУТИ. Я использую Visual Studio Code IDE.

1 Ответ

0 голосов
/ 03 ноября 2019

0. установить miniconda

1. простое использование conda

очень просто:

  • список всех доступных сред conda: conda env list
  • создание новой среды conda: conda create --name <my_env_name>
  • введите conda env: conda activate <my_env_name> или source activate <my_env_name>
  • отключите conda env: conda deactivate или source deactivate

после ввода condaenv:

  • установить пакеты: conda install <package-name> в основном с -c <reponame> с любимыми репозиториями: conda-forge, anaconda или в биоинформатике bioconda (очень актуально)
  • удалить пакеты по: conda remove <package-name>
  • перечислить все пакеты в этом env по: conda list

Таким образом, вы увидите, что все очень похоже на virtualenv.

2. поиск команды установки пакета conda

Просто Google conda install <packagename>, тогда вы найдете в основном anaconda сайт с правильной командой (-c whatever) и для каких ОС и версий ...

Тем не менее, пакеты conda в основном не на высшем уровне. Пип больше на высшем уровне. Вы решаете эту проблему, устанавливая pip в conda env.

3. создать среду и установить python и pip

# choose your conda env name
conda create --name <my_django_project> 

# enter your conda env
source activate <my_django_project>

# install python, [ipython, jupyter]
conda install -c conda-forge python ipython jupyter
# just leave ipython and jupyter away if you don't want them
# you enforce versions by attaching `=<versionnumber>` 
# e.g.
conda install -c conda-forge python=3.8
# however, for my 32-bit computer it suggests 3.7.1
# and I would go with that

# you CAN install python v3.8, but I won't recommend it
# https://anaconda.org/conda-forge/python

# install pip # pip is automatically installed by conda
# when installing python like above.
# conda install -c conda-forge pip

Таким образом, вывод после conda install -c conda-forge python:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    wheel-0.32.3               |           py37_0          35 KB
    pip-18.1                   |           py37_0         1.7 MB
    python-3.7.1               |       h0371630_7        35.9 MB
    setuptools-40.6.3          |           py37_0         613 KB
    ------------------------------------------------------------
                                           Total:        38.3 MB

УСТАНОВЛЕНЫ следующие НОВЫЕ пакеты:

_libgcc_mutex:   0.1-main               
ca-certificates: 2018.03.07-0           
certifi:         2018.11.29-py37_0      
libedit:         3.1.20170329-h6b74fdf_2
libffi:          3.2.1-h97ff0df_4       
libgcc-ng:       8.2.0-h9268252_1       
libstdcxx-ng:    8.2.0-h9268252_1       
ncurses:         6.1-he6710b0_1         
openssl:         1.1.1a-h7b6447c_0      
pip:             18.1-py37_0            
python:          3.7.1-h0371630_7       
readline:        7.0-h7b6447c_5         
setuptools:      40.6.3-py37_0          
sqlite:          3.26.0-h7b6447c_0      
tk:              8.6.8-hbc83047_0       
wheel:           0.32.3-py37_0          
xz:              5.2.4-h14c3975_4       
zlib:            1.2.11-h7b6447c_3  

Таким образом, он автоматически устанавливает pip с python. Поэтому после этой установки у вас также есть pip для установки в среду conda!

Я пытаюсь найти установку conda нужных пакетов. Только если я не могу получить нужные версии или пакет с помощью conda, я переключаюсь на pip install в этой среде. Pip, локально установленный в виртуальную среду, будет локально устанавливать все в среду conda. (Кстати, я понимаю, может быть, вы использовали вначале глобальный пункт, а не пункт в вашем виртуальном окружении? Может, в этом была проблема?)

4. установите postgresql в conda env

после ввода conda env, выполните:

conda install -y -c conda-forge postgresql

5. настроить postgresql в django

Источники, которые я использовал: [this] [http://krischer.github.io/jane/setup/index.html#building-the-documentation] и [this] [http://krischer.github.io/jane/setup/index.html#postgresql-setup].

База данных, которую использует django:внутренняя база данных.

сначала инициализируйте внешнюю (базовую) базу данных:

initdb -D db_djangogirls # this is a database physically in your folder

# start postgres by using this db
postgres -D db_djangogirls & # runs postgres
# press RET to send it to background!

в этом состоянии - создайте не суперпользователя

createuser --encrypted --pwprompt djangogirls
# pass '<yourpassword>' 2x

и создайте внутреннююбаза данных

createdb --owner=djangogirls djangogirls_db # this is the name of the inner database and that name of the inner you have to use in `settings.py`!

И это база данных, которую вы должны сообщить django этому пользователю и этому паролю.

Итак, вы устанавливаете settings.py:

nano mysite/settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'djangogirls_db',
        'USER': 'djangogirls',
        'PASSWORD': 'djangogirls',
        'HOST': 'localhost',
        'PORT': '',
    }
}

иdo:

python manage.py migrate

Если что-то не работает, вам нужно убить postgres для перезапуска.

# In linux, you monitor servers by:
ps aux | grep postgres

# the line with databasename - the first one - that number you use to kill the process
kill <number>
# e.g. the line
# <yourname> 30453  0.0  0.0  14760  2780 pts/6    S+   08:36   0:00 grep --color=auto postgres

Но я не знаю, как вы убиваете процесс postgres в Windows. .. (может быть, вы можете добавить, как это сделать в Windows?)

перезапустите postgresql по:

pg_ctl -D db_djangogirls -l logfile start
...