Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 全部:无法获取<;类别';django.db.models.query.QuerySet'&燃气轮机;_Mysql_Django_Django Queryset - Fatal编程技术网

Mysql 全部:无法获取<;类别';django.db.models.query.QuerySet'&燃气轮机;

Mysql 全部:无法获取<;类别';django.db.models.query.QuerySet'&燃气轮机;,mysql,django,django-queryset,Mysql,Django,Django Queryset,我正在使用Python3.6和django 2.0.2,并在Pycharm中开发一个用户搜索网站。我想使用一个名为User的遗留数据库,并从其他来源自动保存数据,我不会在网站交互期间更改数据库。首先,我在settings.py中配置数据库,如下所示: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), },

我正在使用Python3.6和django 2.0.2,并在Pycharm中开发一个用户搜索网站。我想使用一个名为User的遗留数据库,并从其他来源自动保存数据,我不会在网站交互期间更改数据库。首先,我在settings.py中配置数据库,如下所示:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'legacy_db': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'name',
    'USER': 'user',
    'PASSWORD': 'pass',
    'HOST': 'host',
    'PORT': '3306',
}
python manage.py inspectdb --database legacy_db > models.py
from django.db import models


class User(models.Model):
    username = models.CharField(max_length=16)
    email = models.CharField(max_length=255, blank=True, null=True)
    password = models.CharField(max_length=32)
    create_time = models.DateTimeField(blank=True, null=True)
    id = models.IntegerField(primary_key=True)

    def __str__(self):
        return self.username

    class Meta:
        managed = False
        db_table = 'user'
all = User.objects.all()
}

然后我使用inspect db创建模型文件,命令如下:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'legacy_db': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'name',
    'USER': 'user',
    'PASSWORD': 'pass',
    'HOST': 'host',
    'PORT': '3306',
}
python manage.py inspectdb --database legacy_db > models.py
from django.db import models


class User(models.Model):
    username = models.CharField(max_length=16)
    email = models.CharField(max_length=255, blank=True, null=True)
    password = models.CharField(max_length=32)
    create_time = models.DateTimeField(blank=True, null=True)
    id = models.IntegerField(primary_key=True)

    def __str__(self):
        return self.username

    class Meta:
        managed = False
        db_table = 'user'
all = User.objects.all()
生成的models.py如下所示:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'legacy_db': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'name',
    'USER': 'user',
    'PASSWORD': 'pass',
    'HOST': 'host',
    'PORT': '3306',
}
python manage.py inspectdb --database legacy_db > models.py
from django.db import models


class User(models.Model):
    username = models.CharField(max_length=16)
    email = models.CharField(max_length=255, blank=True, null=True)
    password = models.CharField(max_length=32)
    create_time = models.DateTimeField(blank=True, null=True)
    id = models.IntegerField(primary_key=True)

    def __str__(self):
        return self.username

    class Meta:
        managed = False
        db_table = 'user'
all = User.objects.all()
之后,我使用makemigrations appname和migrate appname来迁移数据库

然后在my views.py中调用模型,如下所示:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'legacy_db': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'name',
    'USER': 'user',
    'PASSWORD': 'pass',
    'HOST': 'host',
    'PORT': '3306',
}
python manage.py inspectdb --database legacy_db > models.py
from django.db import models


class User(models.Model):
    username = models.CharField(max_length=16)
    email = models.CharField(max_length=255, blank=True, null=True)
    password = models.CharField(max_length=32)
    create_time = models.DateTimeField(blank=True, null=True)
    id = models.IntegerField(primary_key=True)

    def __str__(self):
        return self.username

    class Meta:
        managed = False
        db_table = 'user'
all = User.objects.all()
我不知道如何获得回溯,我只能在调试模式下看到错误信息,错误显示为

all: unable to get repr for <class 'django.db.models.query.QuerySet'>
all:无法获取的报告
在代码旁边。我真的在谷歌和StackOverflow上搜索过,但没有找到运气


我是django的新手,这是我第一次自己创建django网站(我在django教程中介绍了示例网站(polls)的步骤)。因此,任何帮助都将不胜感激。

我刚刚找到了解决方案,错误是由数据库路由引起的,因为我没有添加数据库路由类,所以查询只转到默认数据库。我参考下面的URL来解决这个问题。 1.

  • 从django文档中,我还找到了一种解决此问题的简单方法,只需将代码
    all=User.objects.all()
    更改为
    all=User.objects.using('archived').all()
    ,它将手动设置数据库在此处使用