簡體   English   中英

migrate命令后,Django自動創建sqlite3但不自動創建postgresql數據庫

[英]After migrate command, Django automatically creates sqlite3 but doesn't automatically create postgresql database

我將 Windows 10 和 Visual Studio Code IDE 與 python 3.8.5 一起使用。 我正在開發一個名為 tasksplanner 的網絡應用程序,我想將 django 用於我的后端,並將 postgresql v12 用於我的數據庫。

默認情況下,django 帶有 sqlite3。

默認情況下,在我的 django 項目(稱為后端)的文件 settings.py 中,我找到了以下代碼:

DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
         'NAME': BASE_DIR / 'db.sqlite3',
     }
}

如果在終端上我這樣做:

python manage.py migrate

或者

python manage.py makemigrations tasksplanner 

django 會在后端項目文件夾中自動創建一個名為 db.sqlite3 的 sqlite3 數據庫

但是,我想使用 postgresql。

因此,按照此處的說明,我將 settings.py 修改為如下所示:

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': BASE_DIR / 'db.sqlite3',
    # }

    'default': {

            'ENGINE': 'django.db.backends.postgresql',

            'NAME': 'tasks_planner_db.mkd',

            'USER': 'postgres',

            'PASSWORD': '1234',

            'HOST': '127.0.0.1',

            'PORT': '5432',
    }

}

我收到以下錯誤:

conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL:  database "tasks-planner-db.mkd" does not exist

我的問題是:

  1. 為什么 django 不像使用 sqlite3 那樣自動創建 postgresql 數據庫? 我該怎么做才能讓它自動創建 postgresql 數據庫? 還是我必須手動創建它?

  2. postgresql 數據庫的擴展名是否正確? 它應該與 *.mkd 不同嗎

  3. 我還希望在與創建 sqlite3 數據庫的位置相同的位置創建 postgresql 數據庫。 我怎樣才能做到這一點? 如果我做 :

    'NAME': BASE_DIR /'tasks-planner-db.mkd',

我收到錯誤:

lib\site-packages\django\db\backends\postgresql\base.py", line 160, in get_connection_params
    if len(settings_dict['NAME'] or '') > self.ops.max_name_length():
TypeError: object of type 'WindowsPath' has no len()

Django 只能創建 sqlite 數據庫。 當您將數據庫更改為 postgresql 時,它會詢問您的用戶名密碼和端口,以便它可以連接到現有數據庫,而不是創建一個已知的數據庫。

您問題的解決方案是創建一個可以連接到這些詳細信息的 postgresql 數據庫。

Django 可以為您創建一個 sqlite 數據庫,因為 sqlite 純粹是基於文件的。 它不能創建 postgres 數據庫,因為它也需要一個運行它的服務器。

因此,你需要啟動一個 postgres 數據庫服務器,在那里創建一個用戶,然后告訴 django 訪問細節。 您可以使用 docker 鏡像快速啟動並運行這樣的服務器: https : //hub.docker.com/_/postgres

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM