目 录CONTENT

文章目录

永久免费的在线数据库Deta-Base

phyger
2022-06-26 / 0 评论 / 1 点赞 / 1,257 阅读 / 2,820 字 / 正在检测是否收录...

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

以上创建的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。

打印key

上面代码实际做的事情:

  1. 创建了数据表user_info
  2. 插入了一条数据
  3. 根据name=phyger查询了数据
  4. 循环打印了查询结果的元素的key值

注意点:1、在Deta中操作自己的项目只需要提供项目的Key值即可;2、在数据表中的key值也是自动生成的不会重复的。

2.6、在Deta中查看数据表

以上代码创建的表和数据库我们都可以在Deta的web控制台中查看到。

我们在Deta中切换左侧导航栏到Base,就可以看到我们的数据表和数据。

web控制台

我们也可以在web控制台进行数据的增删改查操作。

2.7、Base的常用Api

Base的常用Api为:

  1. put:将项目存储在数据库中。如果Key已经存在,它将更新项目。

  2. insert:将项目存储在数据库中,但如果该键已存在,则会引发错误。(比put慢2倍)。

  3. get:通过项的键从数据库中检索项。

  4. fetch:根据提供的(可选)过滤器从数据库中检索多个项目。

  5. delete:从数据库中删除项目。

  6. 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接口发起请求:

image-20220625202231713

可以看到数据已经成功创建且返回了数据的详细数据。

我们在Deta上查看下。

add成功

查询&修改

@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

我们对listupdate接口进行测试:

list结果

如上,当前phyger-fast的数据详情为:{"age":26,"key":"vrp8uq8jq343","name":"phyger-fast","school":"FastApi"}

我们调用update接口对其进行修改:

update结果

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

Deta更新结果

3、最后

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

官方对数据安全的解释

另:官方说明,用户的数据都是加密存储在AWS上,秘钥有AWS托管,所以用户的数据是相对安全的。

1

评论区