【问题标题】:Converting Django from SQLite to PostgreSQL将 Django 从 SQLite 转换为 PostgreSQL
【发布时间】:2021-04-02 05:44:00
【问题描述】:

我是 Python 和 Django 的新手。我已经购买了一本书,Django 3 by example(第 3 版)并且非常喜欢这些课程。我现在在第 3 章,目标是增强搜索引擎的功能。为此,本书提供了将 DB 转换为 PostgreSQL 的步骤。我按照以下说明进行操作,并尝试了几种方法来解决我在 Google 上发现的问题。我似乎找不到答案。

步骤:

  1. 安装 PostgreSQL:sudo apt-get install postgresql postgresql-contrib
  2. 安装 psycopg2:pip install psycopg2-binary==2.8.4
  3. 为 PostgreSQL 数据库创建用户。打开外壳并运行以下命令。 a) 苏 postgres b) 创建用户 -dP 博客
  4. 输入新用户的密码,然后创建博客数据库并将所有权授予您刚刚使用以下命令创建的博客用户:createdb -E utf8 -U blog blog
  5. 编辑 settings.py 文件...省略步骤。

我被困在上面的步骤 3a 上。我被要求输入 postgres 的密码,但似乎没有任何效果。我也尝试了一些在谷歌上找到的东西。这是我尝试过的。

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

尝试使用 su postgres 重新登录并获得 su 身份验证错误。

【问题讨论】:

  • 试试sudo su postgres?

标签: python django postgresql


【解决方案1】:

您将系统用户 postgres 与数据库用户 postgres 混淆了。 sudo -u postgres psql 以系统用户 postgres(-u)的身份运行 psql 会话,并以数据库用户 postgres 的身份登录。 psql 的默认数据库用户,如果未指定数据库用户('-U'),则为启动它的系统用户。运行 \password postgres 然后为数据库用户 postgres 创建一个密码。完成后,您可以从任何系统用户帐户以数据库用户 postgres 的身份通过 psql 登录。所以在您的个人用户帐户中:psql -d postgres -U postgres。系统将提示您输入密码,请使用您创建的密码。有关详细信息,请参阅Ubuntu Postgrespsql

【讨论】:

    【解决方案2】:

    我能找到的关于它的最佳资源是 digital ocean link 关于如何在 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 数据库已正确配置。

    如果您在创建新角色时遇到任何问题,这里是documentation for create role command

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

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2017-07-11
      相关资源
      最近更新 更多