【问题标题】:Access django database on postgresql from independent python script从独立的python脚本访问postgresql上的django数据库
【发布时间】:2022-01-17 04:07:46
【问题描述】:

我有一个用 django 和 postgresql 构建的网站。 网站上的每个用户(django Auth 系统中的用户)都有许多帐户模型(和其他模型)。

基于 windows-python 的应用程序需要访问(读/写)数据库中的数据。 每个应用都与特定用户相关联。

我的问题:

  1. 应用程序能否仅访问特定用户数据?帐户模型有一个用户属性,因此它会根据它进行过滤,它如何限制外部应用访问?
  2. 从数据库读取/写入的正确方法是什么?我可以像网站一样使用 django 模型吗?

【问题讨论】:

  • Django 具有 DB 功能:因此您可以为表编写 Python 类并在应用程序中使用实例。 Django 处理剩下的事情。 Here 是一个深入浅出的关于如何使用 Django+PG 的教程。
  • 这不是我的问题。我已经全部运行并设置好了。我想从 django+pg 服务器外部访问数据。来自在 Android/Windows 客户端上运行的应用程序。
  • 第一个选项是在 Django 中创建一个 API(也有核心模块)。第二个选项,使用完整的 URL 连接到数据库,例如postgresql://user:passwd@host/mydatabase.
  • 第二个选项授予管理员访问数据库的权限,对吧?
  • can an app access only specific user data? 通常,如果应用程序直接连接到数据库,您不能让用户只访问他们的数据。 SQL 确实有权限,但这些权限非常广泛。例如,您将无法授予用户仅编辑部分表格的权限。通常,您会使用 Django 之类的应用程序服务器来实现对单个用户的访问控制,并且不允许用户直接连接到数据库。

标签: python django database


【解决方案1】:

我认为最好的方法是构建一个 API 层来在 Django 和外部之间交换数据。 Django rest 框架提供了一个非常简单的解决方案,可以将 REST 层添加到您的应用程序中,该层也可以与任何其他外部重用。 https://www.django-rest-framework.org/

通过这种方法,您可以集中和抽象 Django 中的直接数据库操作,避免任何可能破坏其一致性的外部操作(例如使用更改表)。

【讨论】:

猜你喜欢
  • 2018-02-13
  • 2023-03-17
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多