基于sqlalchemy的搜索工具

shoedog的Python项目详细描述


shoedog(在制品)

一个基于SqqLy的灵活高效的即插即用查询引擎 这个图书馆正在建设中!

设置

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)

上面的代码将在应用程序上设置一个接受POST请求的/shoedog端点。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
    }
}

上面的查询将返回一个json响应,其中包含company的所有实例:

  1. 成立年份在1994年至2017年之间,或者正好是2019年
  2. 投资者投资额均超过200万美元
  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字段。如果没有cast,此查询将失败!

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

推荐PyPI第三方库


热门话题
Java相当于。网络结构   是否可以在pycharm ide中使用java模块编译和执行项目?   java AVL树:解决StackOverflower错误   apache如何配置存根代理以使用SOAP服务javax ws   从C++调用java方法最简单的方法是什么?   java eclipse默认jpa实现库在哪里下载?   java根据用户输入/摩尔斯电码生成器从HashMap获取值   JavaWebSphere8。x无法在WEBINF/lib中识别axis 1.4 jar   java Netbeans将包文件夹dir更改为relative   java正在寻找堆数据结构实现方面的帮助   具有共享数据库和鉴别器列的java MultiTenant   java JDBI,使用sql查询将数据检索到自定义对象(构造函数)中,而不是映射   java无法获取用户详细信息:类org。springframework。网状物客户RestClientException,无法提取响应:无合适的   java错误膨胀类ja。burhanrashid52。摄影编辑。PhotoEditorView   内存不足。lang.OutOfMemoryError:Java堆空间(StringBuffer)   有没有一种方法可以编辑文本文件上的数据,而不必在Java中创建另一个临时文件?   在安卓 api 17中使用应用程序上下文膨胀视图时,java不能在安卓自定义toast的布局中使用material主题属性   java Hibernate多对多对象值无效