光线和可预测的redis对象映射器
trol的Python项目详细描述
a库,用于将轻量级和可预测的python对象映射到redis
文档是通过sphinx生成的,托管在Read the Docs! 我想要一种面向对象的方式来与redis交互,它可以提供对数据库布局的精确控制,
可预测和快速查询,以及良好的文档。(希望我最后一个是对的,但我不是
判断) trol的第一个目标是一个由python类定义的静态定义的、人类可读的数据库结构。这允许
开发人员在运行时查看数据库并像定义它的代码一样轻松地读取它。开发人员应该能够
修改数据库并确切地知道它将对程序产生什么影响。因此,trol显式地
不提供由程序员定义的索引或存储支持数据结构。 trol的第二个目标是快速和可预测的查询。任何python访问、函数或修改都将导致
在一个或零个网络传输中。这样做的一个结果是一个鼓励开发人员创建数据库的结构
一切都是在位置上定义的,不需要搜索就可以唯一识别。 pip install trol并开始定义架构:文档
你为什么建这个?
我怎么用?
>>> import trol
>>> import redis
...
>>> class MyDatabase(trol.Database):
... redis = redis.Redis()
...
... favorite_breweries = trol.SortedSet('favbreweries', typ=trol.Model)
...
... class Brewery(trol.Model):
... def __init__(self, short_name):
... self.id = short_name
...
... location = trol.Property()
... name = trol.Property(typ=str)
... beers = trol.Set(typ=trol.Model)
...
... class Beer(trol.Model):
... def __init__(self, name, batch_number):
... self.name = name
... self.batch_number = batch_number
...
... @property
... def id(self):
... return self.name + '@' + str(self.batch_number)
...
... style = trol.Property()
... rating = trol.Property(typ=int)
...
>>> brewery = MyDatabase.Brewery('frmt')
>>> brewery.location = (47.6490476, -122.3467747)
>>> brewery.name = "Fremont Brewing Company"
>>> lush = MyDatabase.Beer('Lush IPA', 120)
>>> lush.style = "Indian Pale Ale"
>>> lush.rating = 5
>>> universale = MyDatabase.Beer('Universale', 245)
>>> universale.style = "American Pale Ale"
>>> universale.rating = 5
>>> brewery.beers.add(lush, universale)
2
>>> MyDatabase.favorite_breweries.add(brewery, 10)
1
>>> set(MyDatabase.redis.keys()) == {
... b'favbreweries',
... b'Brewery:frmt:name',
... b'Brewery:frmt:location',
... b'Brewery:frmt:beers',
... b'Beer:Lush IPA@120:style',
... b'Beer:Lush IPA@120:rating',
... b'Beer:Universale@245:style',
... b'Beer:Universale@245:rating'
... }
True
推荐PyPI第三方库