由eve、sqlalchemy和good intentions支持的rest api框架。
Eve-SQLAlchem的Python项目详细描述
eve sqlalchemy很简单
以下代码块是 examples/one_to_many 的摘录,应该 让您了解如何使用eve sqlalchemy。一个完整的工作示例可以 在那里被发现。如果您不熟悉eve 以及 sqlalchemy ,建议阅读 首先是他们。
对于本例,我们声明两个sqlalchemy映射(from domain.py ):
classParent(BaseModel):__tablename__='parent'id=Column(Integer,primary_key=True)children=relationship("Child")classChild(BaseModel):__tablename__='child'id=Column(Integer,primary_key=True)parent_id=Column(Integer,ForeignKey('parent.id'))
至于eve,使用a settings.py 来配置我们的api。伊芙炼金术, 从模型中访问大量元数据,可以自动生成 为您提供大量的 域 字典:
DEBUG=TrueSQLALCHEMY_DATABASE_URI='sqlite://'SQLALCHEMY_TRACK_MODIFICATIONS=FalseRESOURCE_METHODS=['GET','POST']DOMAIN=DomainConfig({'parents':ResourceConfig(Parent),'children':ResourceConfig(Child)}).render()
最后,运行我们的应用服务器很容易(从app.py):
app=Eve(validator=ValidatorSQL,data=SQL)db=app.data.driverBase.metadata.bind=db.enginedb.Model=Base# create database schema on startup and populate some example datadb.create_all()db.session.add_all([Parent(children=[Child()forkinrange(n)])forninrange(10)])db.session.commit()# using reloader will destroy the in-memory sqlite dbapp.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在Python2.7-3.7和Pypy下经过了全面的测试。