我的网络查询语言
MyNQL的Python项目详细描述
安装
mynlq的源代码托管在GitHub。
git clone https://github.com/livinter/MyNQL.git python setup.py install
或者只是
pip install MyNQL
设定网络
例如,如果一个客户购买了一个产品,则假设customer.id和product.id之间存在关系, 所以你把他们联系起来。可选您可以指定节点之间的距离,以表示节点之间的关联程度。
- connect-连接两个节点
- delete-删除连接
节点在进行连接时自动创建,如果它们没有更多的连接,则会将其删除。所以不要担心他们。
询问网络
现在你可以查询各种关系,而不仅仅是你曾经教过的。使用select指定一个起点,如 customer.id并指定要知道其关闭关系的类别。
- select-为您提供指定类别中最好的相关节点
搜索查询会考虑您指定半径范围内的所有不同路由。
示例
假设我们已经有一个表customer
Id | Name | |
---|---|---|
101 | jose | … |
102 | maria | … |
103 | juan | … |
你还想教网络关于最近购买的东西。
fromMyNQLimportMyNQLmynql=MyNQL('store')mynql.connect('customer.juan','product.jeans')mynql.connect('customer.juan','product.socks')mynql.connect('customer.maria','product.socks')
如果列Name是唯一的,您可以将其用作键,否则您将需要列Id,并且您的代码如下:
mynql.connect("customer.103', 'product.12')
现在你可以从其他角度提问了。您总是指定一个起点,以及要知道最佳匹配的类别:
>>>mynql.select('customer.maria','product')['socks','jeans']
玛丽亚与^ {Tt9} $更紧密地联系在一起,因为她有直接连接,但也有一点到^ {TT10}$,因为通过胡安存在间接连接。
>>>mynql.select('product.jeans','product')['socks']
任何组合都有效。例如,您可以询问一种产品与另一种产品的关系。
后端
存储是在内存中完成的,但是如果您想使用mysql、sqlite或postgresql作为后端,请查看test/pee_example.py。 这将在数据库中保留所有更新的副本。