由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下经过了全面的测试。

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

推荐PyPI第三方库


热门话题
Java嵌套Ifelse速记   java将结果集转换为列表   JavaSpring安全用户缓存失效   java扩展ImageIcon类并保持兼容性   为什么Java和Go的gzip会得到不同的结果?   java JFrame后台在启动后消失   在Atom上设置java时出错   java Akka:在supervisorchild层次结构中的阻塞影响   JavaFacebook访问令牌扩展   java使用for循环查找字符数组中的数字之和   java为什么在这个多线程应用程序中需要单例模式?   java Struts 1。x action被多次调用   java如何控制NetBeans中JButton HTML文本的居中?   JavaJUnit4测试用例   java GWT HTML小部件如何不包装单词