关于多数据库所遇见的那些坑
由于模拟公司业务需求,最近学习Django中,由于业务和用户分别为两个数据库所以需要使用多数据库模式, 但是在书写过程中遇到了很多的坑,再次记下以方便群友学习.
class article(models.Model): artId = models.IntegerField(primary_key=True, unique=True, default="0", verbose_name="文章Id") boardId = models.IntegerField(default="0") userId = models.IntegerField(default="0", verbose_name="用户Id") title = models.CharField(max_length=200, default="", verbose_name="文章标题") content = models.TextField(verbose_name="文章内容", default="") txt = models.CharField(max_length=50, verbose_name="文章地址") snapContent = models.CharField(max_length=100, verbose_name="文章简介") snapimage = models.CharField(max_length=100, verbose_name="图片地址") imgList = models.TextField(verbose_name="文章图片列表") money = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="金额") cmts = models.SmallIntegerField(verbose_name="文章数") ups = models.SmallIntegerField(verbose_name="赞") downs = models.SmallIntegerField(verbose_name="踩") valid = models.BooleanField() words = models.IntegerField(verbose_name="文字数") tags = models.CharField(max_length=200, verbose_name="标签") spider = models.BooleanField() updindex = models.BooleanField() isindex = models.BooleanField() creatime = models.BigIntegerField(verbose_name="创建时间") updatime = models.BigIntegerField(verbose_name="更新时间") lastUpdTime = models.IntegerField(verbose_name="最后更新时间") nextUpdTime = models.IntegerField(verbose_name="下次更新时间") class Meta: # app_label = "Word_Cloud" # 定义该model的app_label db_table = "article" verbose_name = "文章" verbose_name_plural = verbose_name
首先是连接数据库中的article表.因为django需要支持多种数据库所以所有int类型的数据都没有最大长度; 还有就是db_table是要链接的数据库表,在使用多数据库时必须注意如为缺省的话,是会以默认数据库default为连接数据库.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '', 'USER': '', 'PASSWORD': '', 'HOST': '', }, 'bihu': { # 配置第二个数据库节点名称 'ENGINE': 'django.db.backends.mysql', 'NAME': '', # 第二个数据库的名称 'USER': '', 'PASSWORD': '', 'HOST': '', }, }
DATABASE_ROUTERS = ['db_router.DatabaseAppsRouter'] DATABASE_APPS_MAPPING = { # example: # 'app_name':'database_name', 'xadmin': 'default', 'users': 'default', 'Word_Cloud': 'bihu', } 在一个就是setting中的多数据库设置问题.上面这部分代码是setting中的配置,注意app要注明所使用的数据库,否则缺省则为默认数据库.
评论 1
感谢分享。希望能把更多经验分享出来!
谢谢分享~我现在还用不到多数据库,一个还没玩熟。