日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Django 应用分库,数据迁移成功,数据库没有生成表

發(fā)布時(shí)間:2024/7/23 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 应用分库,数据迁移成功,数据库没有生成表 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Django 應(yīng)用分庫,數(shù)據(jù)遷移成功,數(shù)據(jù)庫沒有生成表

背景:不同應(yīng)用對(duì)應(yīng)不同數(shù)據(jù)庫,在遷移數(shù)據(jù)成功后,數(shù)據(jù)庫沒有生成表

Django 官網(wǎng):https://docs.djangoproject.com/ko/1.11/topics/db/multi-db/#allow_migrate

多個(gè)數(shù)據(jù)庫有介紹

settings.py 設(shè)置

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'employee_01','USER':'root','PASSWORD':'Zhb123321@','HOST':'localhost','PORT':3306,},'data_***': {'ENGINE': 'django.db.backends.mysql','NAME': 'data_***_01','USER': 'root','PASSWORD': 'Zhb123321@','HOST': 'localhost','PORT': 3306,}, } #數(shù)據(jù)庫設(shè)置 DATABASE_ROUTERS = ['employee_service0001.db_router.database_router'] DATABASE_APPS_MAPPING = {'platform_***':'default','data_***':'data_***', }

settings.py 同級(jí)文件創(chuàng)建 數(shù)據(jù)庫路由分發(fā) db_router:

from .settings import DATABASE_APPS_MAPPINGDATABASE_MAPPING = DATABASE_APPS_MAPPING# 數(shù)據(jù)庫路由分發(fā) class database_router(object):def db_for_read(self, model, **hints):""""Point all read operations to the specific database.""""""將所有讀操作指向特定的數(shù)據(jù)庫。"""if model._meta.app_label in DATABASE_MAPPING:return DATABASE_MAPPING[model._meta.app_label]return Nonedef db_for_write(self, model, **hints):"""Point all write operations to the specific database.""""""將所有寫操作指向特定的數(shù)據(jù)庫。"""if model._meta.app_label in DATABASE_MAPPING:return DATABASE_MAPPING[model._meta.app_label]return Nonedef allow_relation(self, obj1, obj2, **hints):"""Allow any relation between apps that use the same database.""""""允許使用相同數(shù)據(jù)庫的應(yīng)用程序之間的任何關(guān)系"""db_obj1 = DATABASE_MAPPING.get(obj1._meta.app_label)db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label)if db_obj1 and db_obj2:if db_obj1 == db_obj2:return Trueelse:return Falseelse:return Nonedef allow_syncdb(self, db, model):"""Make sure that apps only appear in the related database.""""""確保這些應(yīng)用程序只出現(xiàn)在相關(guān)的數(shù)據(jù)庫中。"""if db in DATABASE_MAPPING.values():return DATABASE_MAPPING.get(model._meta.app_label) == dbelif model._meta.app_label in DATABASE_MAPPING:return Falsereturn Nonedef allow_migrate(self, db, app_label, model=None, **hints):"""Make sure the auth app only appears in the 'auth_db' database.""""""確保身份驗(yàn)證應(yīng)用程序只出現(xiàn)在“authdb”數(shù)據(jù)庫中。"""if db in DATABASE_MAPPING.values():return DATABASE_MAPPING.get(app_label) == dbelif app_label in DATABASE_MAPPING:return Falsereturn None

模型文件

data_***/models.py:

from django.db import modelsclass IntelligentTableView(models.Model):table_name = models.CharField(max_length=255, verbose_name='報(bào)表名稱')center = models.CharField(max_length=50, verbose_name='所屬中心')on_line = models.CharField(max_length=50, verbose_name='所屬線條')remake = models.CharField(max_length=255, verbose_name='備注')create_name = models.CharField(max_length=50, verbose_name='創(chuàng)建人')create_date = models.DateTimeField(auto_now=True, verbose_name='創(chuàng)建時(shí)間')is_del = models.BooleanField(default=False, verbose_name='是否刪除')class Meta:db_table = 'intelligent_table' # 表名verbose_name = '智能報(bào)表'app_label = 'data_center' # 指明app名稱,用來對(duì)應(yīng)app 和 數(shù)據(jù)庫的map表

遷移文件

python manage.py makemigrations python manage.py migrate

遷移成功,但是數(shù)據(jù)庫沒有生成對(duì)應(yīng)的表,因?yàn)槎紩?huì)跑到默認(rèn)數(shù)據(jù)庫中

在遷移數(shù)據(jù)時(shí) 添加應(yīng)用名稱:

python manage.py migrate --database=data_center

總結(jié)

以上是生活随笔為你收集整理的Django 应用分库,数据迁移成功,数据库没有生成表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。