【Django】データベースがsqliteからpostgreSQLに切り替わる
4164 ワード
一、postgreSQLダウンロードインストール
postgreSQL公式インストールアドレス菜鳥チュートリアルのwindowsインストールチュートリアルインストール中にスーパーユーザーのパスワードを入力するように要求されます.私のポート番号のデフォルトは5432です.他には違いはありません.
二、Djangoコード書き換え
1、pipインストールpsycopg 2パッケージ
2、settings.py
中のdatabaseセグメントの設定は
に改心
この時点で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ファイルを生成し、コマンドにより参照ドキュメントに読み込む
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-#になった場合、コマンド文が完全に入力されていないことを示し、文を終了するにはセミコロンを入力します.
新しいデータベースが作成されていないことに問題はありません.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ファイルを生成し、コマンドにより参照ドキュメントに読み込む