跳转到主要内容

基于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响应

  1. 成立年份在1994年至2017年之间,或正好是2019年
  2. 投资者总共投资了超过2,000,000美元
  3. 投资者中至少有一位投资者的名字是'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'
    }
}, ...]}

请注意

  1. contact_details作为字典返回,因为它是一个不同的模型。
  2. contact_details字段被转换为SingaporeContact,这允许我们查询仅存在于该特定子类上的singapore_contact_number字段。如果没有转换,这个查询将失败!

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

此版本没有可用的源分发文件。请参阅生成分发存档的教程。

构建分发

shoedog-0.0.1-py3-none-any.whl (20.3 kB 查看哈希值)

上传时间 Python 3

shoedog-0.0.1-py2-none-any.whl (20.3 kB 查看哈希值)

上传时间 Python 2

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面