Python Django未使用settings.py中的数据库

Python Django未使用settings.py中的数据库,python,django,django-admin,Python,Django,Django Admin,我进入Python/Django有几个星期了,遇到了一个恼人的问题。我在settings.py中设置了一些现有数据库,一切看起来都很好,我甚至使用connections[].cursor()访问了这些数据库 但是,尽管执行了makemigrations和migrate命令,数据库(和数据)并没有进入我想要使用的模型。我能够使用py manage.py inspectdb--database dbname并将该类信息手动复制到我的models.py中,但这也不起作用(单独键入py manage.p

我进入Python/Django有几个星期了,遇到了一个恼人的问题。我在settings.py中设置了一些现有数据库,一切看起来都很好,我甚至使用connections[].cursor()访问了这些数据库

但是,尽管执行了makemigrations和migrate命令,数据库(和数据)并没有进入我想要使用的模型。我能够使用py manage.py inspectdb--database dbname并将该类信息手动复制到我的models.py中,但这也不起作用(单独键入py manage.py inspectdb并不能调出这些数据库,我只能通过该--数据库扩展来查看)。所以我被难住了,因为我似乎在做所有正确的步骤,但无法使用Django中现有的数据库

欢迎任何其他我可以采取的提示和步骤

(几乎)您可以在互联网上找到的所有教程、示例和第三方应用程序,以及大多数Django文档都假设您的应用程序使用一个数据库。这是因为在一个应用程序中使用多个数据库是相当棘手和不寻常的

但使用多个数据库并不是不可能的,它包含了关于如何做到这一点以及需要进行哪些更改才能使其正常工作的说明

在国际海事组织,以下是在一个项目中使用多个数据库的先决条件:

  • 数据库包含显式无关的信息,即不同数据库中的表之间不存在SQL关系。一个数据库可能包含一个表,该表的列映射到另一个数据库表中的列,但它们不是显式的(模型中没有ForeignKey或ManyToManyField)
  • 您不需要在一个查询中混合使用数据库:这基本上源自前面的条件。这只是意味着,如果需要从一个数据库中获取依赖于另一个数据库中的行的对象,那么可以使用python建立关系。例如,从一个数据库获取名称列表,并使用该列表过滤另一个数据库上的查询集
例如,如果您有一个包含Strava routes(通过一些外部机制定期更新)的现有数据库,并且您的应用程序是一个更广泛的应用程序,可以帮助用户了解他们的邻居,在那里他们可以推荐位置和要做的事情,能够提供一个起点在附近的路线列表可能是你想要展示的东西

既然您知道了这一点,那么在上面链接的文档中描述了该如何做:

  • 因此,某些模型的查询会自动路由到正确的数据库。例如,
    Route.objects.filter(start\u city=city)
    将自动从Strava routes数据库中获取路由
  • 如果需要在应用程序中保存有关路线的信息,请将其保存在默认数据库的模型中,并使用将映射到strava数据库的路线的唯一标识符。使用单独的查询(无关系)获取有关特定路由的信息

也就是说,如果Strava数据库没有通过第三个通道定期更新,并且其目的只是预填充默认数据库,则将数据从Strava数据库导出为json,并使用或将其导入django数据库,后者在json文件的结构上更灵活。

请共享settings.py文件`DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(BASE_DIR,'db.sqlite3'),},'strips':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(BASE_DIR,'stravridedatabase.sqlite3'),},'ridedb':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(BASE_DIR,'ridedb.sqlite3'),}`在一个django项目中使用多个数据库不是您通常会做的事情。您想要使用多个不同数据库的目的是什么?阅读以了解如何使用多个dbs以及其含义。好的,我已经从一个python文件中获得了这些数据库,我正在使用该文件从Strava提取自行车骑行数据,所以我只是在尝试我不反对只使用Django,如果我能找到一种方法将数据从现有数据库传输到Django的默认数据库,那么我很乐意接受任何关于如何实际迁移所有数据的建议。谢谢,我遇到了一些问题,可能不得不继续走兔子洞。或者,我正在探索的第三个选择可能是未来最好的选择,就是找出如何获取我的python文件(它基本上与Strava的API一起工作,以瓦特、心率、秒时间和骑乘日期的形式下载骑乘数据)然后直接将数据加载到Django数据库。我最初的测试让我将数据放入pandas数据框中,因此如果我可以修改代码,将数据框写入Django默认数据库,这将是理想的。第三个选项听起来更简单、更合逻辑。