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进行生产级的部署,那么建议对数据进行加密存储。
另:官方说明,用户的数据都是加密存储在AWS上,秘钥有AWS托管,所以用户的数据是相对安全的。
评论区