由Eve、SQLAlchemy和良好意图驱动的REST API框架。
项目描述
由Eve、SQLAlchemy和良好意图驱动,此扩展允许轻松构建和部署高度可定制的、功能齐全的基于SQL的后端RESTful Web服务。
Eve-SQLAlchemy简单易用
以下代码块是来自examples/one_to_many的摘录,应能给您提供一个关于如何使用Eve-SQLAlchemy的思路。完整的示例可以在那里找到。如果您不熟悉Eve和SQLAlchemy,建议您先了解它们。
对于此示例,我们声明了两个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)
各种错误修复 [Arie Brosztein, toxsick]
重构排序解析器,添加 SQL ORDER BY 表达式;有关更多详细信息,请参阅 http://eve-sqlalchemy.readthedocs.org/#sqlalchemy-sorting [amleczko]
0.1 (2015-01-13)
第一个公开预览版本。 [amleczko]
项目详情
Eve-SQLAlchemy-0.7.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1eeefbfb7bfdbafd17541014f07cad8a009a34685d1f048c237efb5a0d20b780 |
|
MD5 | 52ce967c423bfe6306988edbc5460bfb |
|
BLAKE2b-256 | 6fa89e5cd0bdd2c518e7c5991e95ae3036d4e126d28b938b2a50e81f04cc6c6b |
Eve_SQLAlchemy-0.7.1-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9386136502be163e0be43cb05cecc7c3e65616448eaa3785ab5a036b1d4c5aec |
|
MD5 | 5fcaa97912d5b958d9b3db847bfaf09e |
|
BLAKE2b-256 | 3daf2ba12d82bb38c9ec768acced9e0b6a4b8d96ebfe28ae5153b42544468844 |