2

私はdjangoベースのWebページを構築しようとしています(Pythonを知っていて、いくつかのWebベースのアプリケーションを開発したいと思っています)。このページの目的は、私が読み取りアクセス権しか持たないいくつかの異なるデータベースからのデータを表示することです。基本的に、それはいくつかの重要なことのためのダッシュボードタイプのビューです。

アプリケーションのDjango設定を保持するSqliteデータベースを構築しました。どうすればここから分岐できますか?OracleデータベースとMySQLデータベースにクエリを実行したいですか?

適切なビューで次のようなものを使用して、個別にクエリを実行できます。

def test(request):
    from django.db import load_backend
    myBackend = load_backend('django.db.backends.oracle') # or 'mysql', 'sqlite3', 'oracle'
    myConnection = myBackend.DatabaseWrapper({
        'HOST': 'myhost',
        'NAME': 'mysid',
        'OPTIONS': {},
        'PASSWORD': "mypass",
        'PORT': "1521",
        'USER': "myuser", 
        'TIME_ZONE': "America/Chicago"})

    # Now we can do all the standard raw sql stuff with myConnection.
    myCursor = myConnection.cursor()
    myCursor.execute("SELECT COUNT(1) FROM schema.table;")
    return HttpResponse("%s." % myCursor.fetchone())

テンプレートでは、このカウントを表示できます。ただし、Sqliteデータベースにクエリを実行する方法に基づくと、これは正しくないようです。

データモデルを使用したいのですが。これは、データを読み取るだけのときに使用するのに適切なものですか?アカウントには、oracle/mysqlテーブルへの書き込みアクセス権がありません。

既存のテーブルに対してこれらのモデルを自動的に生成する方法はありますか?これらのテーブルのいくつかは、列の数の点でかなり大きいので、可能であれば、自分の側での間違いを防ぐために作成を自動化することをお勧めします。

4

1 に答える 1

3

複数のデータベースのサポートについては、Djangoのドキュメントを参照してください。簡単に言うと、各データベースの接続情報を設定に追加してからDATABASES、ルーターを設定して、各データベースが処理するアプリ/モデルを決定します。

inspectdb既存のデータベーステーブルからモデルを生成するには、管理コマンドを使用できます。ただし、Djangoはこのコマンドを使用してOracleデータベースのサポートを明示的にリストしていないため、自分でそこにいる可能性があります。

于 2012-08-06T16:02:20.320 に答える