跳转到主要内容

由Eve、SQLAlchemy和良好意图驱动的REST API框架。

项目描述

https://travis-ci.org/pyeve/eve-sqlalchemy.svg?branch=master

由Eve、SQLAlchemy和良好意图驱动,此扩展允许轻松构建和部署高度可定制的、功能齐全的基于SQL的后端RESTful Web服务。

Eve-SQLAlchemy简单易用

以下代码块是来自examples/one_to_many的摘录,应能给您提供一个关于如何使用Eve-SQLAlchemy的思路。完整的示例可以在那里找到。如果您不熟悉EveSQLAlchemy,建议您先了解它们。

对于此示例,我们声明了两个SQLAlchemy映射(来自domain.py

class Parent(BaseModel):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    children = relationship("Child")

class Child(BaseModel):
    __tablename__ = 'child'
    id = Column(Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('parent.id'))

至于Eve,我们使用settings.py来配置我们的API。Eve-SQLAlchemy可以访问您模型的许多元数据,可以为您自动生成大量的DOMAIN字典。

DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite://'
SQLALCHEMY_TRACK_MODIFICATIONS = False
RESOURCE_METHODS = ['GET', 'POST']

DOMAIN = DomainConfig({
    'parents': ResourceConfig(Parent),
    'children': ResourceConfig(Child)
}).render()

最后,运行我们的应用程序服务器很简单(从 app.py 开始)

app = Eve(validator=ValidatorSQL, data=SQL)

db = app.data.driver
Base.metadata.bind = db.engine
db.Model = Base

# create database schema on startup and populate some example data
db.create_all()
db.session.add_all([Parent(children=[Child() for k in range(n)])
                    for n in range(10)])
db.session.commit()

# using reloader will destroy the in-memory sqlite db
app.run(debug=True, use_reloader=False)

API 现已上线,准备使用

$ curl -s http://localhost:5000/parents | python -m json.tool
{
    "_items": [
        {
            "_created": "Sun, 22 Oct 2017 07:58:28 GMT",
            "_etag": "f56d7cb013bf3d8449e11e8e1f0213f5efd0f07d",
            "_links": {
                "self": {
                    "href": "parents/1",
                    "title": "Parent"
                }
            },
            "_updated": "Sun, 22 Oct 2017 07:58:28 GMT",
            "children": [],
            "id": 1
        },
        {
            "_created": "Sun, 22 Oct 2017 07:58:28 GMT",
            "_etag": "dd1698161cb6beef04f564b2e18804d4a7c4330d",
            "_links": {
                "self": {
                    "href": "parents/2",
                    "title": "Parent"
                }
            },
            "_updated": "Sun, 22 Oct 2017 07:58:28 GMT",
            "children": [
                1
            ],
            "id": 2
        },
        "..."
    ],
    "_links": {
        "parent": {
            "href": "/",
            "title": "home"
        },
        "self": {
            "href": "parents",
            "title": "parents"
        }
    },
    "_meta": {
        "max_results": 25,
        "page": 1,
        "total": 10
    }
}

您只需要一个数据库、一个配置文件(默认为 settings.py)和一个启动脚本。总的来说,您会发现配置和微调您的 API 是一个非常简单的过程。

Eve-SQLAlchemy 在 Python 2.7-3.7 和 PyPy 下经过充分测试。

文档

官方项目文档可在 eve-sqlalchemy.readthedocs.org 访问。有关完整的工作示例,特别是关于不同关系类型的示例,请参阅本存储库中的 examples 目录。

变更日志

0.7.1 (2019-08-10)

  • 更新教程以使用 werkzeug.security 模块 (#196) [Mandar Vaze]

  • 由于安全问题,需要 Flask-SQLAlchemy >= 2.4 和 SQLAlchemy >= 1.3 [Dominik Kellner]

  • 支持对嵌入文档字段/关系进行过滤 (#186) [Dominik Kellner]

  • 修复关系排序 [Dominik Kellner]

  • 添加 Python 3.7 和 PyPy3 以支持(并测试)的版本 [Dominik Kellner]

  • 由于 Flask-SQLAlchemy 中的警告,固定 SQLAlchemy 版本 [Dominik Kellner]

  • 改进文档 (#187, #189) [Marc Vila]

0.7.0 (2018-10-08)

  • 支持 Eve 0.7 (#178) [Nicola Iarocci]

0.6.0 (2018-08-15)

  • 修复使用 where 查询列表关系的错误 [Dominik Kellner]

  • 更新教程 (#177) [Nicola Iarocci]

  • 再次返回 None 值 (#155) [Cuong Manh Le]

  • 允许提供自己的 Flask-SQLAlchemy 驱动程序 (#86) [fubu]

  • 支持具有 server_default 的列 (#160) [Asif Mahmud Shimon]

0.5.0 (2017-10-22)

  • 添加 DomainConfig 和 ResourceConfig 以简化配置 (#152) [Dominik Kellner]

  • 改进文档中的修复 (#151) [Alessandro De Angelis]

  • 修复过时的导入警告 (#142) [Cuong Manh Le]

  • 配置 zest.releaser 以进行发布管理 (#137) [Dominik Kellner, Øystein S. Haaland]

  • 进一步利用自动语法和格式化检查 (#138) [Dominik Kellner]

  • 清理依赖项的规范 [Dominik Kellner]

  • 在文档中添加“贡献”部分 (#129) [Mario Kralj]

  • 修复文档中的简单应用程序输出 (#131) [Michal Vlasák]

  • 添加特定于方言的 PostgreSQL JSON 类型 (#133) [Mario Kralj]

  • 修复关于附加查找的文档中的 url 字段 (#110) [Killian Kemps]

  • 与 Eve 0.6.4 兼容并重构测试 (#92) [Dominik Kellner]

0.4.1 (2015-12-16)

  • 改进包含空值的查询 [amleczko]

0.4.0a3 (2015-10-20)

  • hybrid_properties 现在在 Eve 模式中是只读的 [amleczko]

0.4.0a2 (2015-09-17)

  • PUT 在同一事务中删除/重建项目 [goneri]

0.4.0a1 (2015-06-18)

  • 支持 Python-Eve 通用排序语法 [Goneri Le Bouder]

  • 在 sqla 表达式中添加对 and_or_ 连接词的支持 [toxsick]

  • 嵌入式表:使用 DOMAIN 查找资源字段 [Goneri Le Bouder]

0.3.4 (2015-05-18)

  • 修复 setup.py 元数据

  • 修复嵌入式文档的解析方式 [amleczko]

0.3.3 (2015-05-13)

  • 添加对 SA 关联代理的支持 [Kevin Roy]

  • 确保关系被正确生成 [amleczko]

0.3.2 (2015-05-01)

  • ColumnProperty 中不存在运算符时,在 attr.op 上添加回退 [Kevin Roy]

  • 添加对 PostgreSQL JSON 类型的支持 [Goneri Le Bouder]

0.3.1 (2015-04-29)

  • 更灵活地处理 sqlalchemy 运算符 [amleczko]

0.3 (2015-04-17)

  • 将所有内容作为字典返回,而不是 SQLAResult,删除 SQLAResult [Leonidaz0r]

  • 修复更新函数,这解决了 #22 [David Durieux]

  • 修复了替换方法,我们现在与 Eve>=0.5.1 兼容 [Kevin Roy]

  • 修复了 jsonify 函数 [Leonidaz0r]

  • 更新文档 [Alex Kerney]

  • 使用配置中的 id_field 列 [Goneri Le Bouder]

  • 在 tox 中添加 flake8 [Goneri Le Bouder]

0.2.1 (2015-02-25)

  • 始终包装嵌入式文档 [amleczko]

0.2 (2015-01-27)

0.1 (2015-01-13)

  • 第一个公开预览版本。 [amleczko]

项目详情


下载文件

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

源分布

Eve-SQLAlchemy-0.7.1.tar.gz (121.1 kB 查看哈希值)

上传时间

构建分布

Eve_SQLAlchemy-0.7.1-py2.py3-none-any.whl (80.2 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下组织支持