smartninja nosql-一个简单的nosql数据库odm:tinydb、firestore、datastore、mongodb和cosmos db。

smartninja-nosql的Python项目详细描述


智能忍者NoSQL

关于

SmartNinja NoSQL是一个简单的ODM工具,它可以帮助您在这些NoSQL数据库系统之间进行切换:TinyDB数据存储FireStoreMongoDBCosmos DB(通过MongoDB API)。

tinydb用于本地主机开发。这样做的好处是,它可以节省您在本地主机上配置firestore、datastore、monogdb或cosmos模拟器的时间。

当你将你的web应用部署到google app engine、heroku或azure应用服务时,odm会计算出新的环境(通过env变量),并相应地切换数据库。

请记住,这是一个简单的ODM,用于学习SmartNinja课程。所以不是全部 我们将介绍这些nosql数据库的功能,仅包括基本功能。

安装

requirements.txt中添加此依赖项:

smartninja-nosql

确保使用以下命令在本地安装:

pip install -r requirements.txt

其他依赖项

SmartNinja NoSQL有两个强制依赖项:tinydbtinydb_serialization。这两个帮助SmartNinja NoSQL使用TinyDB数据库进行本地主机开发。

数据存储

google cloud datastore dependency inrequirements.txt

google-cloud-datastore

消防仓库

google cloud firestore dependency inrequirements.txt

google-cloud-firestore

MongoDB&Cosmos数据库

要在heroku上使用mongodb或在azure应用服务上使用cosmos db,您需要在requirements.txt文件中添加以下库:

pymongo

英雄

如果要在heroku上使用mongodb,请确保选择mlab mongodb附加组件。

环境变量

环境变量应该已经被自动创建,但仍然要确保它们(仍然)具有正确的名称。

英雄:

  • MongoDB-Uri(添加MLAB MongoDB加载项时显示)
  • dyno(标准Heroku环境变量,在仪表板上不可见)

蔚蓝:

  • appsetting_website_site_name(以"appsetting"开头的env vars是azure的标准env vars。仪表板上看不到)
  • appsetting\u mongourl(使用mongo api启用cosmos db时显示)

谷歌云:

  • GAE_应用程序(标准GAE环境变量)

重要:数据存储环境变量

如果您想在gae上使用数据存储,必须将这段代码添加到app.yaml文件中:

env_variables:
  GAE_DATABASE: "datastore"

如果您想改用firestore,请输入"firestore"或没有此env。变量(firestore是默认值)。

用法

创建类

这是创建使用SmartNinja NoSQL的类的最简单方法:

fromsmartninja_nosql.odmimportModelclassUser(Model):pass

初始化新对象时,可以添加任意多个属性(无需在用户模型中定义):

user=User(first_name="Matt",last_name="Ramuta",age=31,human=True)

但通常您需要在类中指定至少一些必需字段:

classUser(Model):def__init__(self,first_name,last_name,age,human=True,**kwargs):self.first_name=first_nameself.last_name=last_nameself.age=ageself.human=humanself.created=datetime.datetime.now()super().__init__(**kwargs)

如您所见,名字姓氏年龄是必需字段,而人类是可选的,默认值为

已创建的字段会自动被赋值为datetime.datetime.now()

重要信息super().\uu init廑(**kwargs)行必须是\uu init廑方法中的最后一行!此外,还必须添加**kwargs作为函数参数。

自定义类方法

您的类将从模型类继承以下方法:

  • create()
  • edit()
  • 获取集合()
  • delete()
  • <李>get()
  • fetch()
  • 获取一个()

但是你当然可以创建你自己的自定义方法。例子:

smartninja-nosql
0

创建新对象

smartninja-nosql
1

如您所见,创建一个对象需要两件事:初始化一个对象并用create()方法将其保存到数据库中。如果不调用此方法,对象将不会保存到数据库中。

create()方法返回由数据库自动创建的对象id。ID也存储在对象本身中。

从数据库中获取一个对象

如果您知道对象的id

smartninja-nosql
2

您还可以使用fetch\u one()方法根据其他字段查找对象:

smartninja-nosql
3

编辑对象

您需要传递对象ID和要编辑的字段:

smartninja-nosql
4

删除对象

调用delete()方法并传递对象id:

smartninja-nosql
5

查询数据库并获取与查询匹配的对象

您可以指定一个查询

smartninja-nosql
6

您将得到与查询匹配的对象列表。

您还可以有多个查询:

smartninja-nosql
7

但请注意,某些数据库(如firestore)可能需要为这些复合查询创建索引。

重要:

  • 必须遵循此查询结构(如示例所示):["field","operator",value]。因此字段名运算符必须用引号括起来。
  • "不相等"查询("!")是不允许的,因为firestore不支持它们(尽管tinydb和cosmos DB DO)

启用tinydb测试数据库(用于本地主机测试)

创建名为testing的环境变量

smartninja-nosql
8

这将创建一个test tinydb数据库:test_db.json

如何确定正确的数据库

SmartNinja NoSQL自动确定要使用哪个数据库。如果环境具有gae_应用程序变量,则 所选数据库是firestore(除非在app.yaml中添加gae_数据库:"datastore"环境变量)。

如果smartninja nosql找到一个appsetting_website_name它假定环境是azure,因此所选数据库是cosmos db。但如果在这两个环境变量中均未找到 所选数据库为tinydb

待办事项

  • 测试
  • 连续积分
  • "订单"支持
  • 云数据存储的自动复合索引生成器(index.yaml)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
用户界面java,使用gui连接到另一台计算机/服务器的文件系统   运行sbt的ubuntu返回错误:“javahome需要<path>参数”   java如何在Android中处理许多ImageView而不出现内存问题?   查询中非法字符的java相同URL失败   安卓取消引用可能会产生“java”。lang.NullPointerException'   java中的indexoutofboundsexception“java.lang.ArrayIndexOutOfBoundsException”错误   xml Java将dom保存到文件>文件在程序结束后由另一个进程打开   Java的垃圾收集器是如何工作的?   Java如何筛选值(列表)   java处理字符串我怎样才能像在真实的书籍中一样在上面部分生成“小数字”呢?   java SonarQube是否有一个API来获取所有项目分析的一部分?   java startActivity(intent)什么都不做   JAVAutil。扫描器类Java   java如何从Firebase更新电子邮件?UpdateMail方法已被弃用   java Hibernate。如何正确组织带有注释的onetomany关系?   在java中获得卷标和驱动器号之间的映射(而不是FileSystemView)的解决方法是什么   java查找文件的路径