最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python中django操作多数据库的方法(代码)

来源:动视网 责编:小采 时间:2020-11-27 14:21:07
文档

python中django操作多数据库的方法(代码)

python中django操作多数据库的方法(代码):本篇文章给大家带来的内容是关于python中django操作多数据库的方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、添加数据库路由分配文件在项目文件夹里创建database_router文件。将下面的代码复制到该文件里。from
推荐度:
导读python中django操作多数据库的方法(代码):本篇文章给大家带来的内容是关于python中django操作多数据库的方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、添加数据库路由分配文件在项目文件夹里创建database_router文件。将下面的代码复制到该文件里。from

本篇文章给大家带来的内容是关于python中django操作多数据库的方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1、添加数据库路由分配文件

在项目文件夹里创建‘database_router’文件。将下面的代码复制到该文件里。

from django.conf import settings
DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
class DatabaseAppsRouter(object):
 """
 A router to control all database operations on models for different

 databases.
 In case an app is not set in settings.DATABASE_APPS_MAPPING, the router

 will fallback to the `default` database.
 Settings example:
 DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'}
 """
 def db_for_read(self, model, **hints):

 """"Point all read operations to the specific database."""
 if model._meta.app_label in DATABASE_MAPPING:
 return DATABASE_MAPPING[model._meta.app_label]
 return None

 def db_for_write(self, model, **hints):

 """Point all write operations to the specific database."""
 if model._meta.app_label in DATABASE_MAPPING:
 return DATABASE_MAPPING[model._meta.app_label]
 return None
 def allow_relation(self, obj1, obj2, **hints):

 """Allow any relation between apps that use the same database."""

 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 True

 else:

 return False

 return None

 def allow_syncdb(self, db, model):

 """Make sure that apps only appear in the related database.""

 if db in DATABASE_MAPPING.values():

 return DATABASE_MAPPING.get(model._meta.app_label) == db

 elif model._meta.app_label in DATABASE_MAPPING:

 return False

 return None
 def allow_migrate(self, db, app_label, model=None, **hints):

 """

 Make sure the auth app only appears in the 'auth_db'

 database.

 """

 if db in DATABASE_MAPPING.values():

 return DATABASE_MAPPING.get(app_label) == db

 elif app_label in DATABASE_MAPPING:

 return False

 return None

2、在settings.py文件中配置多数据库

# Database

# https://docs.djangoproject.com/en/2.1/ref/settings/#databases
DATABASES = {

 'default': {

 'ENGINE': 'django.db.backends.mysql',

 'NAME': 'django_test',

 'HOST': '127.0.0.1',

 'USER': 'root',

 'PASSWORD': '123456',

 'PORT': '3306',

},

#配置第二个数据库

 'test': {

 'ENGINE': 'django.db.backends.mysql',

 'NAME': 'xsanjiaocheng',

 'HOST': '127.0.0.1',

 'USER': 'root',

 'PASSWORD': '123456',

 'PORT': '3306',

 }

}

#设置数据库路由,将django_test改为你项目的名称。

DATABASE_ROUTERS = ['django_test.database_router.DatabaseAppsRouter']

#配置数据库与app的对应关系

DATABASE_APPS_MAPPING = {
 # example:
 # 'app_name':'database_name',
 # 'app01': 'test',
 'app01': 'default',
 'app02': 'test',
}

3、在对应的app里的models.py文件里正常创建数据表即可(在创建表时尽量不要使用同样的表名)

app01中的models.py:

class django_test_1(models.Model):

 abc = models.CharField(max_length=20)

 class Meta:

 app_label='app01'

app02中的models.py:

class test_1(models.Model):

 tests= models.CharField(max_length=20)

4、生成迁移文件

和以前一样:python manage.py makemigrations

5、迁移数据库

迁移时需指定数据库名

python manage.py migrate database=test

如果针对已创建好的数据库创建对应的models.py文件不用生成迁移文件,直接执行“python manage.py inspectdb > app02/models.py --database=test”的命令即可。

6、操作数据库

1)手动选择数据库

django_test_1.objects.using('default').create(abc='hdajh')

2)自动选择数据库

和以前一样不加using()。

7、 配置urls.py

导入对应app的views.py的文件。最好命名个别名,或者给views.py文件重命名。

其他使用和以前一样。

文档

python中django操作多数据库的方法(代码)

python中django操作多数据库的方法(代码):本篇文章给大家带来的内容是关于python中django操作多数据库的方法(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。1、添加数据库路由分配文件在项目文件夹里创建database_router文件。将下面的代码复制到该文件里。from
推荐度:
标签: 操作 连接 使用
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top