光线和可预测的redis对象映射器

trol的Python项目详细描述


a库,用于将轻量级和可预测的python对象映射到redis Documentation Status

文档

文档是通过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

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

推荐PyPI第三方库


热门话题
Java,我如何在方法中放置一个开关盒?   Java将数组添加到数组特殊模式   java的类常量和文件导入   如何在java中使用正则表达式更改匹配子字符串的前缀和后缀   Java Hashmap实现中的字符串哈希问题   java如何计算数组中的连续数字组   处理异常后如何在java中重新启动thrift服务器?   java嵌套列表迭代器。程序不会终止   如何在maven目标目录下的JAR文件中运行java类?   mysql Java JPA/Hibernate级联删除   java使用ApachePDFBox在PDF中查找javascript代码   java将hsqlDB集成到netbeans 7 IDE中   java如何删除word梯形图中的最后一个“>”   java如何存储由Minimax扩展的节点数