Django 从SQLite切换到postgres,postgres询问密码
需要注意的两件事:第一,我在虚拟环境运行时执行这些命令。因此,终端显示为Django 从SQLite切换到postgres,postgres询问密码,django,postgresql,macos,django-postgresql,Django,Postgresql,Macos,Django Postgresql,需要注意的两件事:第一,我在虚拟环境运行时执行这些命令。因此,终端显示为(env):。第二,每次我试图进入su postgres时,它都要我输入密码 我正在读一本关于Django(使用mac)的书,书中说: 如果您正在使用macOS,请从下载PostgreSQL并安装它。您还需要安装Python的Psycopg2 PostgreSQL适配器。运行以下命令安装它:pip install Psycopg2==2.7.4 我已经在我的机器上安装了postgres,因为我之前一直在尝试部署一个网站,然后
(env):
。第二,每次我试图进入su postgres时,它都要我输入密码
我正在读一本关于Django(使用mac)的书,书中说:
如果您正在使用macOS,请从下载PostgreSQL并安装它。您还需要安装Python的Psycopg2 PostgreSQL适配器。运行以下命令安装它:pip install Psycopg2==2.7.4
我已经在我的机器上安装了postgres,因为我之前一直在尝试部署一个网站,然后又回到了我构建的这个示例项目。所以我没有去网站安装它。我按照说明安装了psycopg2((env):pip安装psycopg2==2.7.4.
)
“让我们为PostgreSQL数据库创建一个用户。打开shell并运行以下命令:su postgres
然后createuser-dP blog
”
我认为“打开shell”意味着进入python虚拟shell?因此:
python manage.py shell
然后
这不起作用,它要求我输入密码。退出shell,运行相同的命令(env):su postgres
,结果相同
从那以后,我想也许因为我在一个虚拟环境中,我必须重新下载postgres
。我运行了pip-install-postgres
(不知道这是否会下载一些东西,但它确实下载了,所以我没有去网站/也不知道如何从网站将它安装到这个环境中)。请注意,此版本已安装postgres
以及psycopg someversion binary
。现在我已经安装了psycopg2==2.7.4
和一些版本的psycopg2二进制文件。从那里我运行了(env):su postgres
(来自我的环境的注释)。同样的结果,它要求输入密码
然后,我用python manage.py shell
重新进入python交互式shell,然后再次运行su postgres
。同样的结果
在这一点上,我试图研究我自己。我读到的内容说,我需要通过在终端输入sudo-I
从root(?)运行su-postgres
。我做到了这一点,现在我在贾斯汀MBP:~root#
(这似乎与我试图使用postgres db的django项目毫无关系)。不管怎样,从这里su-postgres
,你可能已经猜到了,它向我要了密码
非常感谢您对我如何正确切换db的任何帮助
此外,在输入所有这些内容并思考我所做的事情之后,我意识到我还没有更改python项目的数据库设置。但是这本书也没有,所以不确定这个项目是如何知道这个数据库的 您可能还没有在MacOS上设置root用户,请参阅答案。但是,有关使用
su
的更多信息,请参阅答案
您应该在macOS终端中执行此操作的原因是,您在PostrgreSQL数据库上设置、配置和执行数据库操作,而这本身,正如您的书所描述的,与Django(或Python)无关
因此,您必须确保1)在您的设备上安装了PostgreSQL,2)运行了PostgreSQL(因为您将创建用户,这实际上意味着将数据插入到您的PostgreSQL数据库中)。我过去在MacOS上使用(非附属)设置(安装、运行和配置)PostgreSQL
关于Django,您需要在设置.py中更改数据库
(另请参见Django教程中的部分)
谢谢,第一个链接帮助我建立了数据库。将它连接到我的django项目,现在它正在(本地)工作。
su postgres
DATABASES = {
# default namespace
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'dbname' #name of the database,
'USER': 'username' #name of the created user,
'PASSWORD': 'password',
'HOST': '127.0.0.1' #when local,
'PORT': '5432' #default psql port,
}
}