ユーザーが 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 に同じデータベース内にテーブルを作成させれば、作業が簡単になるかもしれません。