将Django从SQLite转换为PostgreSQL



我是Python和Django的新手。我买了一本书,Django 3示例(第三版(,非常喜欢这些课程。我现在在第3章中,目标是增强搜索引擎的功能。为了做到这一点,本书提供了将数据库转换为PostgreSQL的步骤。我按照下面的指示进行操作,并尝试了几种方法来解决我在谷歌上发现的问题。我似乎找不到答案。

步骤:

  1. installPostgreSQL:sudo-apt-get-installpostgresql-PostgreSQL-controb
  2. install psycopg2:pip安装psycopg2二进制==2.8.4
  3. 为PostgreSQL数据库创建用户。打开shell并运行以下命令。a( su postgresb( createuser-dP博客
  4. 输入新用户的密码,然后创建博客数据库,并将所有权授予您刚刚使用以下命令创建的博客用户:createdb-E utf8-U博客博客
  5. 编辑settings.py文件。。。省略了步骤

我陷入了上面的步骤3a。我被要求提供postgres的密码,但似乎什么都不起作用。我也试过谷歌上的一些东西。这是我试过的。

sudo -u postgres psql
password postgres
enter and confirm password
q

尝试使用su postgres重新登录,并得到一个su身份验证错误。

您混淆了系统用户postgres和数据库用户postgress。CCD_ 1作为系统用户postgres(-u(运行CCD_。如果未指定数据库用户('-U'(,则psql的默认数据库用户是启动它的系统用户。运行password postgres将为数据库用户postgres创建密码。完成后,您可以作为数据库用户postgres从任何系统用户帐户通过psql登录。因此,在您的个人用户帐户中:psql -d postgres -U postgres。系统将提示您输入密码,请使用您创建的密码。有关更多信息,请参阅Ubuntu Postgres和psql

我能找到的最好的资源是关于如何在ubuntu中进行此配置的数字海洋链接。

在这里总结一些步骤:

  • 登录到psql命令行界面,为了做到这一点,将角色从sudo用户更改为postgres,并打开psql命令行提示符。

    user@ubuntu$ sudo -i -u postgres
    postgres@ubuntu# psql
    
  • 在psql内部创建一个新用户用于django应用程序

    CREATE ROLE djangouser WITH ENCRYPTED PASSWORD '&%mysupersecurepasswordthatc4ndiff!culh4ck3rsbruteforce!$';
    
  • 授予用户djangouser登录的权限

    ALTER ROLE "djangouser" WITH LOGIN; --use double quotes here
    
  • 创建一个数据库来保存您的数据

    CREATE DATABASE blog;
    
  • 将数据库博客中的权限授予数据库用户djangouser

    GRANT ALL PRIVILEGES ON DATABASE blog TO djangouser;
    

现在您的postgres数据库已正确配置。

如果您在创建新角色时遇到任何问题,下面是创建角色命令的文档。

现在,您可以收集有关数据库名称、用户和密码的信息来配置您的设置.py,并使用适当的值来组装您的连接字符串。

最新更新