前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >永久免费的在线数据库Deta-Base

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

作者头像
Python研究所
发布2022-06-27 14:56:17
7.4K0
发布2022-06-27 14:56:17
举报
文章被收录于专栏:大飞的部落阁大飞的部落阁

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

代码语言:javascript
复制
pip install deta

2.4、创建项目&Key

最开始,我们需要注册登录Deta。点击这里进行

登录后,我们点击New Project,输入项目名,选择区域,点击创建即可。

创建项目
创建项目

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

创建key
创建key

以上创建的Key只会展示一次,请妥善保存。

2.5、创建数据表&插入数据

代码语言:javascript
复制
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
打印key

上面代码实际做的事情:

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

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

2.6、在Deta中查看数据表

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

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

web控制台
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进行数据创建,查询和修改的操作。

创建

代码语言:javascript
复制
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
image-20220625202231713

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

我们在Deta上查看下。

add成功
add成功

查询&修改

代码语言:javascript
复制
@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结果
list结果

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

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

update结果
update结果

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

Deta更新结果
Deta更新结果

3、最后

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

官方对数据安全的解释
官方对数据安全的解释

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、前言
  • 2、快速开始
    • 2.1、关于Deta
      • 2.2、关于Deta的Base
        • 2.3、安装Deta
          • 2.4、创建项目&Key
            • 2.5、创建数据表&插入数据
              • 2.6、在Deta中查看数据表
                • 2.7、Base的常用Api
                  • 2.8、在FastApi中使用Base
                  • 3、最后
                  相关产品与服务
                  对象存储
                  对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档