【发布时间】:2019-09-16 05:15:14
【问题描述】:
我正在尝试为我的 django 项目使用两个数据库。第一个用于身份验证等,第二个应保存用户通过表单发送的数据。
我将第二个数据库添加到我的 settings.py 文件中,但我不断收到错误,最近的一个是 (1146, "Table 'dataset.main_SomeModel' doesn't exist")
确实,我的 Django 项目似乎无法与数据库交互,因为那里没有表。
我做错了吗?也许在这里使用两个数据库是错误的方式?
这是 settings.py,第二个名为 dataset 的数据库是我要使用的:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'dataset': {
'NAME': 'dataset',
'ENGINE': 'django.db.backends.mysql',
'USER': 'root',
'PASSWORD': 'password goes here'
}
}
这是模型:
class SomeModel(models.Model):
data = models.CharField(max_length=100)
num = models.Float()
def save(self): # ALL the signature
super(SomeModel, self).save(using='dataset')
这是表格:
class DataForm(forms.ModelForm):
class Meta:
model = SomeModel
fields = ("data", "num")
def save(self, commit=True):
send = super(DataForm, self).save(commit=False)
if commit:
send.save()
return send
既然我添加了using="dataset" 行,数据不应该发送到dataset 数据库吗?还是我做错了什么?任何建议表示赞赏!
编辑:我尝试使用manage.py migrate --database="dataset" 迁移第二个数据库,但收到错误The connection dataset doesn't exist
【问题讨论】:
-
您是否在辅助数据库上运行了
manage.py migrate? -
@JohnGordon 检查我上次的编辑!
-
您最初运行
manage.py makemigrations时是否在settings.py中存在辅助数据库?还是你后来添加的? -
那我认为这是你的问题。添加新数据库/模型时,您必须重新运行
makemigrations和migrate。 -
说“它不起作用”是没有帮助的。到底发生了什么?
标签: python django django-models django-forms django-database