python - 我可以在没有 ORM 的情况下从 Django 查询辅助数据库吗?
问题描述
我需要从我的 Django 应用程序中查询由另一个应用程序控制的数据库。理想情况下,我还想修改一些值。
我已经在 Django 中配置了一个辅助数据库连接,但是因为这些表是在其他地方控制的,所以它们不能很好地融入 Django 的 ORM。我宁愿从我的 Django 应用程序中进行简单的 SQL 查询。
这可能吗?
解决方案
你有两个选择:
ORM-less:只需为您的第二个数据库(用于 MySQL、PostgreSQL 等)
安装和导入 Python 驱动程序,然后创建连接并运行纯 SQL 查询,而无需使用任何 Django。这方面的详细信息可以在相应数据库驱动程序的文档中找到。MySQLdb
psycopg2
ORM-ful:
在您的添加第二个数据库
settings.py
:DATABASES = { 'default': { # your Django db settings here }, 'second': { # any name can be used # your second db settings here } }
- 使用 Django ORM 定义您的模型,并且不要忘记在模型中设置
managed = False
和正确的.table_name
Meta
- 查询您的第二个数据库
ModelInSecondDb.objects.using('second').all()
- 或者,添加一个数据库路由器类,该类会自动将这些模型的所有查询定向到您的
second
数据库。
推荐阅读
- mpi - 在 MPI 中使用 MPI_BCAST 和 MPI_Reduce 对数字求和
- javascript - 如何在 React 中使用 useMemo 优化我的代码?
- python - mock.patch 在 pytest 夹具中不起作用?
- c# - C# 如何在 STUB 组件的 EmbeddedSchemaField 内的 ItemFields 中添加值
- wso2 - wso2 3.0.0 中的 SOAP API 发布问题
- python - 根据元组列表中的第二个值找到元组后返回元组的第一个元素
- java - 如何用另一个替换数组列表中的元素?
- r - 如何将列中的字符值压缩为 r 中的 2?
- docker - 当我们只有一个经纪人时,多个 KAFKA_ADVERTISED_LISTENERS 意味着什么,而不是当我们有很多经纪人时?
- postgresql - 为什么我在尝试将行插入 PSQL 中的表时收到语法错误?