【Django】データベースがsqliteからpostgreSQLに切り替わる


一、postgreSQLダウンロードインストール
postgreSQL公式インストールアドレス菜鳥チュートリアルのwindowsインストールチュートリアルインストール中にスーパーユーザーのパスワードを入力するように要求されます.私のポート番号のデフォルトは5432です.他には違いはありません.
二、Djangoコード書き換え
1、pipインストールpsycopg 2パッケージ
2、settings.py
中のdatabaseセグメントの設定は
DATABASES = {
     
    'default': {
     
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase',
    }
}

に改心
DATABASES = {
     
  'default': {
     
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': '    ',
    'USER': '   ',
    'PASSWORD': '    ',
    'HOST': 'localhost',
    'PORT': '5432',
  }
}

この時点でrunserverを実行し、django.db.utils.OperationalErrorのエラーを報告し、migrateがなかったのかと思いきや、migrateしたのかエラーを報告し、psycopg 2.OpertaionalError+django.db.utils.OperationalError、具体的な情報を見てconnect関数のエラーがあったのかと推測したら、接続時に問題があったはずなのでdatabaseの配置情報に戻りました
2.postgreSQLでデータベースを新規作成し、settingsでNAMEを構成するのと同じ名前
まず、ユーザー名とパスワードが間違っているかどうかを疑うに違いありません.pgデータベースの最初のインストールが完了すると、デフォルトでユーザーが1人連れてきます.postgreSQLのshellを開いて、何回か車に戻ってパスワードを入力してpostgres=#に入りますが、実は次のクエリーをしなくてもユーザー名が前の表示にあることがわかります.前のpostgres=#表示がpostgres-#になった場合、コマンド文が完全に入力されていないことを示し、文を終了するにはセミコロンを入力します.
  • データベースのすべてのユーザーを表示:du
  • 現在の接続ユーザーの表示:select*from current_user;
  • 新規ユーザーの作成:create user dev with password'***;
  • ユーザーパスワードの変更:alter role postgres(これはユーザー名)with password‘newpwd’;
  • しかし、このパスワードを変更する方法は安全ではないはずです.パスワードは明文でlogなどに記録される可能性があります.
  • 現在のpostgresqlのユーザーと対応するパスワードを表示します:select rolname,rolpassword from pg_authid;

  • 新しいデータベースが作成されていないことに問題はありません.1つ作成すればいいです.書いたmigrateもrunserverも成功しました
    注意しなければならないのはpgadminを開けた後に2つのパスワードに負けて、第1のパスワードはMaster Passwordで、私はpgdaminの自分のパスワードだと思って、データベースと関係がないべきで、直接ボタンをクリックして変更することができますか?2番目のパスワードは、データベース・ユーザーがサーバに接続するパスワードです.コマンド・ラインで上の文で変更する必要があります.
    3、Django他に書いたコードも直さなくてもいい
    当初sqlite 3を使用していたとき、migrateの前に自分で手動でデータベースを作成する必要があったかどうか忘れましたが、私は覚えていないようです.sqlite 3を開いて表のデータを表示する方法が分からないので、自動的に完了する可能性があります.他のデータベースを構成するときは、新しいデータベースを作成することを忘れてしまいます.
    三、その他のデータベース移行の提案
    公式ドキュメントの説明:settingsファイルは他のデータベースの構成、パラメータ設定(Databaseの文字に戻る)をどのように書きますか?
    クエリー中に多くのsqlite 3がmysqlに切り替わるのを見ましたが、他の手順はほぼ同じで、pipでsql関連のパッケージをインストールし、プロジェクトの下にある_init__.pyファイルの下に何か書く
    データベース移行時のデータベース内のデータの移行操作は、コマンドによりjsonファイルを生成し、コマンドにより参照ドキュメントに読み込む