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

关于GraphQL无数据库使用及Python非MongoDB/SQL存储的技术问询

1. 是否可以在不将数据存储到数据库的情况下使用GraphQL?

当然可以。GraphQL本质是一套数据查询与操作规范,核心是通过定义Schema描述数据结构,再通过Resolver函数处理请求逻辑——它从设计上就不绑定任何数据库。

你可以从多种非数据库的数据源获取或生成数据:

  • 返回内存中的静态硬编码数据(比如固定的列表、字典)
  • 调用第三方API获取数据后返回
  • 读写本地文件(JSON、CSV、甚至纯文本)
  • 实时生成临时计算结果

举个极简的示例(以JavaScript为例,原理通用):
Schema定义:

type Query {
  greeting: String
}

对应的Resolver直接返回字符串:

const resolvers = {
  Query: {
    greeting: () => "Hey there, no database needed!"
  }
};

这段代码完全不需要数据库就能正常运行GraphQL服务。

2. 使用Python结合GraphQL时,能否不通过MongoDB或SQL来完成数据库的数据存储操作?

绝对可以。Python生态提供了大量非MongoDB、非SQL的存储方案,适合不同场景:

  • 本地文件存储:用json/csv模块读写文件,适合小型应用或低数据量场景
  • 键值存储:通过redis-py操作Redis,或使用内存型键值结构
  • 替代文档数据库:比如CouchDB(用couchdb库)、RethinkDB
  • Python原生对象存储:ZODB可以直接序列化存储Python对象,无需SQL或Mongo语法
  • 轻量级数据库:比如tinydb(支持内存/文件存储)、sqlite3的:memory:纯内存模式

下面是用Python的Ariadne框架结合JSON文件实现数据存储的示例:
首先定义GraphQL Schema:

type Query {
  users: [User]
}
type User {
  id: ID!
  name: String!
}
type Mutation {
  addUser(name: String!): User
}

然后编写Resolver逻辑,通过JSON文件读写数据:

import json
from ariadne import QueryType, MutationType, make_executable_schema, graphql_sync

# 存储数据的JSON文件路径
DATA_FILE = "users.json"

def load_users():
    try:
        with open(DATA_FILE, "r") as f:
            return json.load(f)
    except FileNotFoundError:
        return []

def save_users(users):
    with open(DATA_FILE, "w") as f:
        json.dump(users, f)

# 定义查询和变更处理器
query = QueryType()
mutation = MutationType()

@query.field("users")
def resolve_users(*_):
    return load_users()

@mutation.field("addUser")
def resolve_add_user(_, info, name):
    users = load_users()
    new_user = {"id": str(len(users) + 1), "name": name}
    users.append(new_user)
    save_users(users)
    return new_user

# 生成可执行Schema
schema = make_executable_schema("""
type Query { users: [User] }
type User { id: ID! name: String! }
type Mutation { addUser(name: String!): User }
""", [query, mutation])

# 测试查询
result = graphql_sync(schema, {"query": "{ users { id name } }"})
print(result.data)

这个例子完全不依赖MongoDB或SQL,仅通过JSON文件完成数据的持久化存储。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:05:32