我将尝试构建一个网络应用程序,用户可以在其中访问 URL、登录并查看报告和其他信息。但是,报告的数据存储在外部数据库中。这是一个 MySQL 数据库,我可以访问它。
我对谷歌做了一些研究,但没有找到任何例子。我对连接多个数据库进行了一些阅读 - https://docs.djangoproject.com/en/dev/topics/db/multi-db/所以看起来我可以连接到数据库了。
下一部分是我卡住的地方。数据库中的数据将随时更新。我不想能够编辑信息,我也不想能够覆盖任何东西。我只是希望能够连接到数据库拉取所需的信息,然后通过模板查看以供用户查看。首先,因为数据一直在更新,这会是一个问题吗? (希望不会!)
一旦我连接到数据库,最好能够提取数据,然后将其转换为我可以输出到模板的格式?我是否需要将数据导入模型,然后使用 View 进行控制。或者我需要用 JSON 或 XML 转换数据吗?
我对 python/django 还很陌生,所以任何帮助都将不胜感激。如果您需要更多信息,请提前询问并感谢。 :)
最佳答案
没问题!我一直这样做。
至于“不要编辑或更新数据”,只是不要向您的应用添加任何会更新数据的内容。 Salem 关于在 MySQL 端使用权限的建议也是一个好主意。
要检索数据,您有两种选择:
1) 您可以创建与您在 MySQL 数据库中的表相对应的 Django 模型。您可以手动执行此操作,也可以使用带有 manage.py 的“inspectdb”命令为自己提供一个良好的起点。然后做这样的事情:
def myview(request):
rows = MyModel.objects.using('mysql').all()
return render_to_response("mytemplate.html", {"rows" : rows })
2) 您可以在您的应用程序中手动管理连接和查询。这在一个 View 中是完全有效的:
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 在同一个数据库中创建它的表,它可能会简化事情。
关于python - 使用 django 从外部数据库中提取数据到模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16596261/