一尘不染

使用django从外部数据库将数据提取到模板

json

我将尝试构建一个Web应用程序,用户可以在其中访问URL,登录并查看报告和其他信息。但是,报告的数据存储在外部数据库中。这是一个我将要访问的MySQL数据库。

我在Google上做了一些研究,没有太多运气找到任何例子。我已经读了一些有关连接到多个数据库的文章-https://docs.djangoproject.com/en/dev/topics/db/multi-
db/所以看来我可以连接到数据库了。

下一部分是我遇到的问题。数据库中的数据将一直更新。我既不想编辑信息,也不想覆盖任何东西。我只希望能够连接到数据库,提取所需的信息,然后通过模板查看它,以使用户能够看到。首先,因为数据一直在更新,这会成为问题吗?(我希望不是!)

连接到数据库后,什么是最好的方式才能提取数据,然后将其转换为可以输出到模板的格式?我是否需要将数据导入模型,然后使用视图进行控制。还是我需要使用JSON或XML转换数据?

我是python / django的新手,因此非常感谢您的帮助。如果您需要更多信息,请事先询问并感谢。:)


阅读 311

收藏
2020-07-27

共1个答案

一尘不染

没问题!我一直都这样做。

至于“不要编辑或更新数据”,只要不要在您的应用程序中添加任何会更新数据的内容即可。塞勒姆关于在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)您可以在应用程序中手动管理连接和查询。在视图中这是完全有效的:

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在同一数据库中创建表,则可能会简化事情。

2020-07-27