smartninja nosql-一个简单的nosql数据库odm:tinydb、firestore、datastore、mongodb和cosmos db。
smartninja-nosql的Python项目详细描述
智能忍者NoSQL
关于
SmartNinja NoSQL是一个简单的ODM工具,它可以帮助您在这些NoSQL数据库系统之间进行切换:TinyDB,数据存储,FireStore,MongoDB和Cosmos 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有两个强制依赖项:tinydb
和tinydb_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()
<李>fetch()
获取一个()
get()
但是你当然可以创建你自己的自定义方法。例子:
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测试数据库(用于本地主机测试)
创建名为 这将创建一个test tinydb数据库: SmartNinja NoSQL自动确定要使用哪个数据库。如果环境具有 如果smartninja nosql找到一个testing的环境变量
8
smartninja-nosql
test_db.json
如何确定正确的数据库
gae_应用程序
变量,则
所选数据库是firestore(除非在app.yaml
中添加gae_数据库:"datastore"
环境变量)。appsetting_website_name
它假定环境是azure,因此所选数据库是cosmos db。但如果在这两个环境变量中均未找到
所选数据库为tinydb待办事项
推荐PyPI第三方库