我正在Django开发一些项目,用于管理仓库中的资产。我想使用两个数据库。首先是sqlite数据库,其中包含有关用户的任何数据。第二个是mongoDB数据库,其中要存储与资产相关的所有数据。问题是,如何告诉我的模型类,他们应该使用哪个数据库(负责用户注册的模型等--sqlite,负责管理资产数据的模型 - mongoDB)?我读了DATABASE_ROUTERS
并使用Meta
类,但它是Django支持的数据库的解决方案(或者我可能不知道),我不知道是否可以将它与mongoengine集成。
感谢任何提示!
答案 0 :(得分:0)
这可能会对您有所帮助:
我完全同意使用数据库路由器。我所做的是,我使用单一管理界面来处理多个数据库。请注意,所有应用程序的身份验证都存储在默认数据库中。
Settings.py
# Define the database manager to setup the various projects
DATABASE_ROUTERS = ['manager.router.DatabaseAppsRouter']
DATABASE_APPS_MAPPING = {'app1': 'db1',
'app2':'db2'}
DATABASES = {
#For login authentication of both app I have used postgres sql
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'fail_over',
'USER': 'SomeUser',
'PASSWORD': 'SomePassword',
'HOST': '127.0.0.1',
'PORT': '',
},
# Set this parameters according to your database configuration
'db1': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(PROJECT_DIR, 'yourdatabasename.db'),
},
# Set this parameters according to your database configuration
'db2' : {
'ENGINE' : 'django_mongodb_engine',
'NAME' : 'my_database'
}
}
样本模型
# Create your models here for app1.
class Modelapp1(models.Model):
field1 = models.TextField(max_length=100)
field2 = models.TextField(max_length=200)
class Meta:
app_label = 'app1'
def __unicode__(self):
return self.field1
# Create your models here for app2.
class Modelapp2(models.Model):
field1 = models.CharField(max_length=25)
class Meta:
app_label = 'app2'
def __unicode__(self):
return self.field
答案 1 :(得分:0)
我找到了解决方案,这非常简单。如果您希望模型使用mongoDB数据库,只需创建模型类女巫Document
参数(或EmbeddedDocument
,例如class Magazine(Document):
)。但如果您更喜欢定义默认数据库类型,只需创建类,就像在django文档中一样(例如class Person(models.Model):
)。