纯python轻量级NoSQL型数据库——TinyDB

举报
darkpard 发表于 2022/10/01 09:40:21 2022/10/01
【摘要】 随着大数据的发展,NoSQL型数据库越来越流行,TinyDB是一个纯python的轻量级数据库。今天我们就来探索下TinyDB,权当种草。1. 安装和调用先安装包!pip install tinydb然后调用包,并建立数据库from tinydb import TinyDBdb = TinyDB('db.json')2. 简单的数据插入与查看让我们先来尝试插入两条数据db.insert({'...

随着大数据的发展,NoSQL型数据库越来越流行,TinyDB是一个纯python的轻量级数据库。今天我们就来探索下TinyDB,权当种草。

1. 安装和调用

先安装包

    !pip install tinydb

    然后调用包,并建立数据库

      from tinydb import TinyDB
      db = TinyDB('db.json')

      2. 简单的数据插入与查看

      让我们先来尝试插入两条数据

        db.insert({'a': 1, 'b': 2})
        db.insert({'c': 3, 'd': 4})

        图片

        返回值是2,也许会返回当前插入的记录的序号

        然后来看一下我们插入的数据

          db.all()


          TinyDB还支持多行插入

            db.insert_multiple([{'1': 1, '2': 2},
                               {'a': 1, 'b': 2}])


            返回值是[3, 4],看来我们上面的猜测基本上是正确的

            TinyDB的多行插入还有另一种模式

              db.insert_multiple({'a': i, 'b': i+5} for i in range(5))

              让我们来看下现在的数据

                db.all()

                图片

                查看全部数据也还有另一种方法

                  for i in db:
                      print(i)

                  图片

                  3. 简单的数据查询

                  3.1. Query

                  数据查询也有两种方法,一种是调用Query

                    from tinydb import Query
                    a = Query()

                    我们可以查找a为1的数据,注意这里的a是指关键词为a,下同

                      db.search(a.a==1)


                      也可以查找a大于1的数据

                        db.search(a.a>1)

                          db.search(a.1==1)

                          图片

                          可以看到Query方法没法查找数字关键词

                          3.2. where

                          第二种是where,它的用法与Query类似

                            from tinydb import where
                              db.search(where('a')==0)

                              图片

                              where可以查询键为'1'的数据,下面会有案例涉及,这里不再举例

                              4. 数据修改

                                db.update({'1': 5})

                                图片

                                  db.all()

                                  图片

                                  可以看到,有'1'的改成了5,没有'1'的增加了这一键值对,怎样只改选定的数据呢?

                                    db.update({'1': 7}, a.a==0)

                                      db.all()


                                      5. 数据删除

                                      可以通过delete来删除数据中的键值对

                                        from tinydb.operations import delete
                                        db.update(delete('1'), a.a==0)

                                          db.all()

                                          图片

                                          还可以通过remove来进行数据删除

                                            db.remove(a.a==1)

                                            图片

                                              db.all()

                                              图片

                                              6. 特殊的插入与查询

                                              插入值为字典的键值对

                                                db.insert({'a': {'a': 3}})

                                                图片

                                                插入值为数组的键值对

                                                  db.insert({'a': [{'b': 1}, {'c': 2}]})

                                                  图片

                                                    db.all()


                                                    嵌套查询

                                                      db.search(a.a.a==3)


                                                      组合查询

                                                        db.search((a.a>1) & (a.b>7))

                                                        图片

                                                        因为a的值在在字典,所以不能用>

                                                          db.search((where('1')>1) & (a.b>7))

                                                          图片

                                                          7. 其他操作

                                                          清空数据库

                                                            db.truncate()
                                                              db.all()

                                                              图片

                                                              关闭数据库

                                                                db.close()
                                                                  db.all()

                                                                  图片

                                                                  【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
                                                                  • 点赞
                                                                  • 收藏
                                                                  • 关注作者

                                                                  评论(0

                                                                  0/1000
                                                                  抱歉,系统识别当前为高风险访问,暂不支持该操作

                                                                  全部回复

                                                                  上滑加载中

                                                                  设置昵称

                                                                  在此一键设置昵称,即可参与社区互动!

                                                                  *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

                                                                  *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。