djangoormのoracleデータベースユーザーにロールを設定します

Vitor Freitas

レガシーOracleデータベースをdjangoアプリケーションに統合する必要があります。基本的に、いくつかのテーブルをdjangoモデルにマップする必要があります。

次のように、接続は正常に機能しています。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.oracle',
        'NAME': 'orad03',
        'USER': 'u_hrp',
        'PASSWORD': 'myp4ssw0rd',
        'HOST': 'myhost.com.br',
        'PORT': '1521'
    }
}

ここでの私の問題は、アプリケーションテーブルが所有者ADM_HRPの下にあり、アプリケーションがユーザーU_HRP(特権をまったく持たない)を使用することです。INSERT、DELETE、SELECTなどの権限は、ロールR_HRPにあります。

したがって、従来のASP / VbScriptアプリケーションでは、接続を確立した直後に役割を設定します。

Sub Connect()
    Set objConexao = Server.CreateObject("ADODB.Connection")
    objConexao.Mode = 3
    objConexao.CommandTimeout = 90

    Dim strDSN

    strDSN="DSN=orad03;Uid=u_hrp;Pwd=myp4ssw0rd;"
    objConexao.Open strDSN
    objConexao.execute "SET ROLE R_HRP IDENTIFIED BY " & chr(34) & "myp4ssw0rd" & chr(34)
End Sub

djangoアプリケーションで同じことを行う必要があり、接続を開いた直後にSETROLEステートメントを実行することができます

ダークレス

デフォルトでオプションがあるかどうかはわかりません。しかし、Djangoシグナル(フック)で目標を達成できると思います。

https://docs.djangoproject.com/en/dev/ref/signals/#connection-created

connection_createdシグナルは、データベースへの新しい接続が正常に確立された後に呼び出されます。それはあなたに接続オブジェクトを与えます。したがって、次のようなことができます。

from django.db.backends.signals import connection_created

def set_role(**kwargs):
    connection = kwargs.get("connection", None)
    if connection:
        cursor = connection.cursor()
        cursor.execute("SET ROLE R_HRP IDENTIFIED BY %s", "myp4ssw0rd")

connection_created.connect(set_role)

私はオラクルデータベースを持っておらず、それもテストしていませんが、それはあなたに正しい方向を示すはずです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Firebaseデータベース-データベース内のユーザーのルールを設定する

分類Dev

データベースをシングルユーザーモードからマルチユーザーに設定します

分類Dev

Firebase-リアルタイムデータベースがユーザーに追加の値を設定して例外をスローする

分類Dev

データベース設定を.ENVまたはマスターデータベースに保存します。複数のデータベースを持つlaravelの場合、ユーザーごとに1つのデータベース

分類Dev

ユーザープロファイルページのデータベーススキーマをどのように設計しますか

分類Dev

DjangoORMは複数のモデルを介してユーザーテーブルにアクセスします

分類Dev

ログインしたユーザーのレコードのみを表示するマルチユーザーログインを共有データベースに設定するための最良の方法は何ですか?

分類Dev

Facebookユーザーをローカルデータベースのユーザーにリンクする

分類Dev

AngularのユーザーIDに基づいてデータベースからユーザーロールを取得します

分類Dev

Mongodb $ externalデータベースは、ユーザー定義のロールを持つ新しいユーザーを作成できません

分類Dev

Sitefinityはデータベースからすべてのユーザーとロールを取得します

分類Dev

PostgreSQL:ユーザー定義関数をあるデータベースから別のデータベースにコピー/インポートします

分類Dev

ユーザー定義グループのデータベース設計

分類Dev

RecyclerViewで位置を設定するためにユーザーのスクロールを停止します

分類Dev

カスタム環境を通常のユーザーからrootユーザーに設定します(sudo -i)

分類Dev

SOOrder画面でユーザーがロールになっている現在のユーザーログインのデフォルトのウェアハウスセレクター値を設定します

分類Dev

値が設定される前に、ユーザーコントロールのドロップダウンにデータを入力します

分類Dev

ユーザーローカルのPythonインタープリターをクラスターのデフォルトとして設定する方法

分類Dev

ローミングするユーザーデータファイルをWindowsユーザーのデスクトップ設定と一緒にどこに配置しますか?

分類Dev

ユーザーの別のmysqlテーブルからMybbデータベースにユーザーをインポートします

分類Dev

ユーザー設定のためにデータをxamarinにローカルに保存する方法

分類Dev

Arangodb:arangoshは、特定のユーザー/データベースに対して許可されたデータベース/ユーザーを取得します

分類Dev

Oracleデータベース19c-[ロール名]を[ユーザー]に付与するエラーORA-01917:ユーザーまたはロールが存在しません

分類Dev

接続プールの設定。データベースに再接続します

分類Dev

Firestore / Flutter-現在のユーザーデータをデバイスにローカルに保存します

分類Dev

Symfony:LDAPサーバーに対してユーザーを認証しますが、ユーザー名がカスタムデータベーステーブルにある場合にのみログインを許可します

分類Dev

GridViewのラベルにデータを設定します

分類Dev

既存のSQLServerデータベースをデフォルトのMVC個別ユーザーアカウントデータベースに接続します

分類Dev

MongoDBデータベースを作成し、そのパスを特定のフォルダーに設定します

Related 関連記事

  1. 1

    Firebaseデータベース-データベース内のユーザーのルールを設定する

  2. 2

    データベースをシングルユーザーモードからマルチユーザーに設定します

  3. 3

    Firebase-リアルタイムデータベースがユーザーに追加の値を設定して例外をスローする

  4. 4

    データベース設定を.ENVまたはマスターデータベースに保存します。複数のデータベースを持つlaravelの場合、ユーザーごとに1つのデータベース

  5. 5

    ユーザープロファイルページのデータベーススキーマをどのように設計しますか

  6. 6

    DjangoORMは複数のモデルを介してユーザーテーブルにアクセスします

  7. 7

    ログインしたユーザーのレコードのみを表示するマルチユーザーログインを共有データベースに設定するための最良の方法は何ですか?

  8. 8

    Facebookユーザーをローカルデータベースのユーザーにリンクする

  9. 9

    AngularのユーザーIDに基づいてデータベースからユーザーロールを取得します

  10. 10

    Mongodb $ externalデータベースは、ユーザー定義のロールを持つ新しいユーザーを作成できません

  11. 11

    Sitefinityはデータベースからすべてのユーザーとロールを取得します

  12. 12

    PostgreSQL:ユーザー定義関数をあるデータベースから別のデータベースにコピー/インポートします

  13. 13

    ユーザー定義グループのデータベース設計

  14. 14

    RecyclerViewで位置を設定するためにユーザーのスクロールを停止します

  15. 15

    カスタム環境を通常のユーザーからrootユーザーに設定します(sudo -i)

  16. 16

    SOOrder画面でユーザーがロールになっている現在のユーザーログインのデフォルトのウェアハウスセレクター値を設定します

  17. 17

    値が設定される前に、ユーザーコントロールのドロップダウンにデータを入力します

  18. 18

    ユーザーローカルのPythonインタープリターをクラスターのデフォルトとして設定する方法

  19. 19

    ローミングするユーザーデータファイルをWindowsユーザーのデスクトップ設定と一緒にどこに配置しますか?

  20. 20

    ユーザーの別のmysqlテーブルからMybbデータベースにユーザーをインポートします

  21. 21

    ユーザー設定のためにデータをxamarinにローカルに保存する方法

  22. 22

    Arangodb:arangoshは、特定のユーザー/データベースに対して許可されたデータベース/ユーザーを取得します

  23. 23

    Oracleデータベース19c-[ロール名]を[ユーザー]に付与するエラーORA-01917:ユーザーまたはロールが存在しません

  24. 24

    接続プールの設定。データベースに再接続します

  25. 25

    Firestore / Flutter-現在のユーザーデータをデバイスにローカルに保存します

  26. 26

    Symfony:LDAPサーバーに対してユーザーを認証しますが、ユーザー名がカスタムデータベーステーブルにある場合にのみログインを許可します

  27. 27

    GridViewのラベルにデータを設定します

  28. 28

    既存のSQLServerデータベースをデフォルトのMVC個別ユーザーアカウントデータベースに接続します

  29. 29

    MongoDBデータベースを作成し、そのパスを特定のフォルダーに設定します

ホットタグ

アーカイブ