Djangoを使用して外部データベースからテンプレートにデータを取得する 質問する

Djangoを使用して外部データベースからテンプレートにデータを取得する 質問する

ユーザーが URL にアクセスし、ログインしてレポートやその他の情報を表示できる Web アプリを構築しようとしています。ただし、レポートのデータは外部データベースに保存されています。これは、私がアクセスする MySQL データベースです。

Googleで少し調べてみましたが、例はあまり見つかりませんでした。複数のデータベースへの接続について少し調べてみました。https://docs.djangoproject.com/en/dev/topics/db/multi-db/したがって、データベースに正常に接続できるようです。

次の部分で行き詰まっています。データベース内のデータは常に更新されます。情報を編集したり、上書きしたりできるようにしたくありません。DB に接続して必要な情報を取得し、テンプレートを通じてユーザーが確認できるようにしたいだけです。まず、データは常に更新されるため、これは問題になりますか? (そうならないことを願っています!)

データベースに接続したら、データを抽出してテンプレートに出力できる形式に変換するにはどうすればよいでしょうか? データをモデルにインポートしてからビューで制御する必要がありますか? それとも、データを JSON または XML に変換する必要がありますか?

私は Python / Django の初心者なので、どんな助けでも大歓迎です。さらに情報が必要な場合は、お気軽にお問い合わせください。よろしくお願いします。 :)

ベストアンサー1

問題ありません!私はいつもこれをやっています。

「データを編集または更新しない」という点に関しては、データを更新するものをアプリに追加しないでください。MySQL 側で権限を使用するという Salem の提案も良いアイデアです。

データを取得するには、次の 2 つのオプションがあります。

1) MySQL データベースのテーブルに対応する Django モデルを作成できます。これは手動で行うこともできますし、manage.py で「inspectdb」コマンドを使用して適切な開始点を設定することもできます。次に、次のようにします。

def myview(request):
  rows = MyModel.objects.using('mysql').all()
  return render_to_response("mytemplate.html", {"rows" : rows })

2) アプリ内で接続とクエリを手動で管理できます。これはビュー内では完全に有効です。

def myview(request):
  conn = MySQLdb.connect("connection info here")
  try:
    cursor = conn.cursor()
    cursor.execute("select * from mytable")
    rows = cursor.fetchall()
  finally:
    conn.close()

  return render_to_response("mytemplate.html", {"rows" : rows})

最後に、Django は MySQL をデータベースとして使用しても問題ありません。DBA が Django に同じデータベース内にテーブルを作成させれば、作業が簡単になるかもしれません。

おすすめ記事