You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中指定GraphQL Schema使用自定义数据库执行Mutation操作

给GraphQL Mutation指定非默认数据库的方法

在Django里给GraphQL Mutation指定非默认数据库,核心是利用Django模型自带的数据库指定能力,以下是几种实用方案:

  • 单个模型实例保存时指定数据库
    直接在save()方法中添加using参数,参数值对应你在settings.py的DATABASES配置里的非默认数据库别名。

修改你提供的Mutation代码如下:

class CreateCategory(graphene.Mutation):
    class Arguments:
        name = graphene.String(required=True)
        slug = graphene.String(required=True)

    category = graphene.Field(CategoryType)

    @classmethod
    def mutate(cls, root, info, name, slug):
        category = Category()
        category.name = name
        category.slug = slug
        print(category)
        try:
            # 替换成你的非默认数据库别名,比如'db_secondary'
            category.save(using='db_secondary')
        except:
            traceback.print_exc()
        return CreateCategory(category=category)
  • 创建实例时直接指定数据库
    如果用objects.create()创建模型实例,可以通过using()先绑定目标数据库,写法更简洁:
# 替换成你的数据库别名
category = Category.objects.using('db_secondary').create(name=name, slug=slug)
  • 批量操作时统一指定数据库
    如果Mutation里包含多个数据库操作(比如创建、查询、修改多个关联模型),可以用using上下文管理器包裹所有操作,统一指定数据库:
from django.db import using

@classmethod
def mutate(cls, root, info, name, slug):
    try:
        # 缩进内的所有数据库操作都会使用指定的数据库
        with using('db_secondary'):
            category = Category(name=name, slug=slug)
            category.save()
            # 这里可以添加其他同数据库的操作,比如关联模型的保存
    except:
        traceback.print_exc()
    return CreateCategory(category=category)

注意事项

确保你已经在settings.py中正确配置了非默认数据库,示例配置如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    },
    'db_secondary': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'secondary_db',
        'USER': 'db_user',
        'PASSWORD': 'db_pass',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

内容的提问来源于stack exchange,提问作者Mansi Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:01:06