我正在使用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',
}
}
然后我使用inspect db创建模型文件,命令如下:
python manage.py inspectdb --database legacy_db > models.py
生成的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'
之后,我使用makemigrations appname并迁移appname来迁移数据库。
然后我在views.py中调用模型如下:
all = User.objects.all()
我不知道如何获得追溯,我只能在调试模式下看到错误信息,错误显示为
all: unable to get repr for <class 'django.db.models.query.QuerySet'>
代码旁边的。我真的在Google和StackOverflow中搜索过但没有运气。
我是django的新手,这是我第一次独立创建一个django网站(我在django教程中走过了示例网站(民意调查)的步骤)。所以任何帮助都会非常感激。
答案 0 :(得分:0)
我只是找到了解决方案,错误是由数据库路由引起的,因为我没有添加数据库路由类,所以查询只是转到默认数据库。我参考下面的网址来解决这个问题。 1. django document
从django文档中,我还找到了解决此问题的简单方法,只需将代码all = User.objects.all()
更改为all=User.objects.using('archived').all()
,这将手动设置数据库以在此处使用。