在Django中安装Postgresql数据库时出现问题

时间:2019-11-03 10:03:03

标签: python django postgresql psycopg2

我在dajngo中的postgresql数据库有问题。当我运行命令“ python -m pip install psycopg2”时,它可以工作。所以我运行命令“ python manage.py makemigrations”,我遇到了这个问题:

command result1
command result2

但是当我运行命令“ pip Frozen”时,结果如下:
Django == 2.2.6
psycopg2 == 2.8.4
pytz == 2019.3
sqlparse == 0.3.0

这是我的settings.py文件(数据库):
my settings.py - database

这是我的配置:

Windows 10 64位
-Django 2.2.6
-Psycopg2 2.8.4
-PostgreSQL 12
-pip 19.3.1

C:\ XXX \ PostgreSQL \ 12 \ bin在我的PATH中。 我使用Visual Studio Code IDE。

1 个答案:

答案 0 :(得分:0)

0。安装miniconda

1。 conda基本用法

超级容易:

  • 列出所有可用的conda环境:conda env list
  • 创建新的conda env:conda create --name <my_env_name>
  • 输入conda env:conda activate <my_env_name>source activate <my_env_name>
  • 停用conda env:conda deactivatesource deactivate

进入 conda环境后,

  • 通过以下方式安装软件包:conda install <package-name>主要与-c <reponame>一起使用 最喜欢的仓库是conda-forgeanaconda或生物信息学bioconda(最新)
  • 通过以下方式删除软件包:conda remove <package-name>
  • 通过以下方式列出此环境中的所有软件包:conda list

所以您看到的所有内容都与virtualenv非常相似。

2。搜索conda软件包安装命令

仅使用Google conda install <packagename>,然后您会发现大部分anaconda网站 使用正确的命令(-c whatever)以及针对哪些操作系统和版本...

但是,conda软件包大多不是一流的。点更是一流的。 您可以通过在conda env中安装pip来解决此问题。

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  

因此它会使用python自动安装pip。 因此,完成此安装后,您还需要pip才能安装到 康达环境!

我要做的是尝试找到所需软件包的conda安装。 只有使用conda无法获得所需的版本或软件包时, 我在这种环境下切换到pip install。 由于本地安装到虚拟环境中,因此pip将在本地安装 一切都进入了conda环境。 (顺便说一句,我知道,也许您在一开始就使用了全局点 您的虚拟环境中没有一点?也许是问题所在?)

4。在conda env中安装postgresql

输入 conda env后,请执行以下操作:

conda install -y -c conda-forge postgresql

5。在Django中设置PostgreSQL

我使用的来源是:[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': '',
    }
}

然后做:

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

但是我不知道您如何在Windows中终止postgres进程...(也许您可以在Windows中添加如何执行该操作?)

通过以下方式重启postgresql:

pg_ctl -D db_djangogirls -l logfile start