基于SQLAlchemy构建的搜索工具
项目描述
shoedog (WIP)
一个基于SQLAlchemy构建的灵活、高效的即插即用查询引擎,灵感来自GraphQL。这个库还在开发中!
设置
from shoedog import shoedoggify
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
shoedoggify(app, db)
上述代码将在您的应用程序上设置一个/shoedog
端点,该端点接受POST
请求。POST请求的负载是一个shoedog负载,其语法如下
query Company {
name
year_founded [(* > 1994 and * < 2017) or * == 2019]
investors {
name [any in ['gv', a16z']]
amount_invested [all > 2000000]
}
contact_details (SingaporeContact) {
address
singapore_contact_number
}
}
上述查询将返回一个包含所有满足以下条件的Company实例的json响应
- 成立年份在1994年至2017年之间,或正好是2019年
- 投资者总共投资了超过2,000,000美元
- 投资者中至少有一位投资者的名字是'gv'或'a16z'
此外,json响应具有可预测的结构,只返回请求的字段。
{'companies': [{
'name': 'XYZ Company',
'year_founded': 1995,
'investors': [{
'name': 'gv',
'amount_invested': 2000001
}],
'contact_details': {
'address': '123 Foobar Road',
'singapore_contact_number': '+65 9635 9999'
}
}, ...]}
请注意
contact_details
作为字典返回,因为它是一个不同的模型。contact_details
字段被转换为SingaporeContact
,这允许我们查询仅存在于该特定子类上的singapore_contact_number
字段。如果没有转换,这个查询将失败!
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
此版本没有可用的源分发文件。请参阅生成分发存档的教程。
构建分发
shoedog-0.0.1-py3-none-any.whl (20.3 kB 查看哈希值)
shoedog-0.0.1-py2-none-any.whl (20.3 kB 查看哈希值)