【发布时间】:2017-11-16 05:23:39
【问题描述】:
我正在使用两个 mysql 模式 X 和 Y,它们都包含多个表,但是两个模式中都有一个同名的表。
两种架构如下:
+--------------+--+--------------+
| X | | Y |
+--------------+--+--------------+
| name | | album_info |
+--------------+--+--------------+
| invite | | photo_info |
+--------------+--+--------------+
| photo | | photo |
+--------------+--+--------------+
| user_details | | temp |
+--------------+--+--------------+
现在,我想查询这两个表,但是当我在具有相同名称的 models.py 文件中编写表结构时,它会引发错误/异常。 我在 routers.py 文件中声明了这两个表,如下所示:
modelDatabaseMap = {
.
'photo': 'default',
.
.
.
'photo': 'y',
}
(X 是我的默认架构)。 声明 i models.py 如下:
class Photo(models.Model):
id = models.AutoField(db_column='ID', primary_key=True)
has_tagged_with = models.IntegerField()
has_reposted_with = models.IntegerField()
.
.
class Meta:
managed = False
db_table = 'photo'
class Photo(models.Model):
id = models.AutoField(db_column='ID', primary_key=True)
account_id = models.IntegerField()
p_id = models.IntegerField()
is_profile = models.IntegerField()
.
.
class Meta:
managed = False
db_table = 'photo'
现在,歧义首先出现在名称中,在 models.py 中的声明中,其次在查询中。 我被困在如何通过 orm 分别查询两个表。 对此的任何帮助/引导都会有所帮助。提前致谢。
【问题讨论】:
-
每个模式都有连接吗?你的
DATABASES配置如何? -
DATABASES 配置如下:
DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.mysql', 'NAME': 'X', 'USER': DATABASE_USERNAME, 'PASSWORD': DATABASE_PASSWORD, 'HOST': DATABASE_HOST_NAME, 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'}, } }与我将模式 Y 添加到字典中的方式相同。 -
这就是重点。你有两个数据库配置?例如,一个
default和另一个y? -
我没有两个数据库配置,默认和 Y 两个模式都在 DATABASES = { } 中提到我只有一个 DATABASES 配置
-
DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.mysql', 'NAME': 'X', 'USER': , 'PASSWORD' : , 'HOST': , 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'}, }, 'y': { 'ENGINE': 'django.contrib.gis.db.backends .mysql', 'NAME': 'Y', 'USER': , 'PASSWORD': , 'HOST': , 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'}, } }
标签: mysql django python-3.x django-orm