1、前言在我们平时的学习中,我们经常会用到数据库,但是一般情况下数据库都需要我们自己安装部署,生产环境还需要自己购买服务器安装。
1、前言
在我们平时的学习中,我们经常会用到数据库,但是一般情况下数据库都需要我们自己安装部署,生产环境还需要自己购买服务器安装。今天我们就来介绍一款永久免费,无限存储空间的 NoSql 数据库服务 Deta 的 Base 服务。
2、快速开始
2.1、关于 Deta
其实我基础 Deta 已经很久了,趁着这次机会,我就讲其介绍给大家。
Deta 提供三个核心服务,分别是 Base、Driver、Micros。拥有 OpenApi、Cli 等操作方式。
今天我们就主要介绍 Deta 的 Base 服务。
2.2、关于 Deta 的 Base
Deta Base 是一个超级易于使用的生产级 NoSQL 数据库,具有无限的存储空间。
☂️易于使用的 API。
🏁超快且高度可扩展。
📈无限制的数据库。
👀图形用户界面。
2.3、安装 Deta
pip install deta
2.4、创建项目 & Key
最开始,我们需要注册登录 Deta。点击这里进行。
登录后,我们点击New Project,输入项目名,选择区域,点击创建即可。

然后我们进入到创建的新项目中,在左侧导航栏选择 Settings,点击Create Key,创建一个项目的秘钥供后面使用。

以上创建的 Key 只会展示一次,请妥善保存。
2.5、创建数据表 & 插入数据
key = 'csdsds221312313123123DG9Nw'
# 1) 导入deta
from deta import Deta
# 2) 初始化项目
deta = Deta(key)
# 3) 创建数据表
user_info = deta.Base("user_info")
user_info.insert({
"name": "phyger",
"age": 18,
"school": "XUPT"
})
fetch_res = user_info.fetch({"name": "phyger"})
for item in fetch_res.items:
print(item["key"])
代码运行结果,打印了 item 的 key。

上面代码实际做的事情:
- 创建了数据表 user_info
- 插入了一条数据
- 根据 name=phyger 查询了数据
- 循环打印了查询结果的元素的 key 值
注意点:1、在 Deta 中操作自己的项目只需要提供项目的 Key 值即可;2、在数据表中的 key 值也是自动生成的不会重复的。
2.6、在 Deta 中查看数据表
以上代码创建的表和数据库我们都可以在 Deta 的 web 控制台中查看到。
我们在 Deta 中切换左侧导航栏到 Base,就可以看到我们的数据表和数据。

我们也可以在 web 控制台进行数据的增删改查操作。
2.7、Base 的常用 Api
Base 的常用 Api 为:
put:将项目存储在数据库中。如果 Key 已经存在,它将更新项目。
insert:将项目存储在数据库中,但如果该键已存在,则会引发错误。(比 put 慢 2 倍)。
get:通过项的键从数据库中检索项。
fetch:根据提供的(可选)过滤器从数据库中检索多个项目。
delete:从数据库中删除项目。
update:更新数据库中的项目
2.8、在 FastApi 中使用 Base
我们用一个 Demo 演示 FastApi 使用 Base 进行数据创建,查询和修改的操作。
创建
key = 'c0v232323sdsds6vvmLzH32323Nw'
# 1) 导入deta
from deta import Deta
# 2) 初始化项目
deta = Deta(key)
# 3) 创建数据库
user_info = deta.Base("user_info")
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from pydantic import BaseModel
import uvicorn
app = FastAPI()
# 定义请求体结构
class userData(BaseModel):
name: str
age: int
school: str
@app.post('/add')
async def addUser(user_data:userData): # user_data用来接收post的body
name = user_data.name
age = user_data.age
school = user_data.school
# 创建一条数据到Base
user = user_info.put({
"name": name,
"age": age,
"school": school
})
return JSONResponse(user, 201)
if __name__ == '__main__':
uvicorn.run(app='base-demo:app', host='localhost', port=3311, reload=True)
对add接口发起请求:

可以看到数据已经成功创建且返回了数据的详细数据。
我们在 Deta 上查看下。

查询 & 修改
@app.get('/list')
async def listUser():
ret = user_info.fetch()
return ret._items
# 导入json兼容编码器
from fastapi.encoders import jsonable_encoder
@app.put('/update/{userKey}')
async def updateUser(userKey,data:userData):
ret = user_info.put(data=jsonable_encoder(data), key=userKey) # 在更新时对客户端发来的json对象进行兼容性转换
return ret
我们对list和update接口进行测试:

如上,当前 phyger-fast 的数据详情为:{"age":26,"key":"vrp8uq8jq343","name":"phyger-fast","school":"FastApi"}。
我们调用 update 接口对其进行修改:

我们再去 Deta 控制台查看下结果:

3、最后
Deta 是一个免费为开发者提供不用开箱即可使用的数据存储产品,其目标就是为用户提供全托管的数据平台。用户无需关注数据存储运维,只需要专注业务逻辑开发即可。但是如此以来就可能存在数据安全的问题,所以建议大家重要的数据还是使用私有数据库进行存储。如果要使用 Deta 进行生产级的部署,那么建议对数据进行加密存储。