带有sqlalchemy嵌套更改跟踪的json类型

sqlalchemy-json的Python项目详细描述


sqlalchemy json为SQLAlchemy

  • MutableJson是一个简单的实现,用于跟踪对json对象的顶级更改;
  • NestedMutableJson是this的一个扩展,它可以跟踪在嵌套对象或数组(pythondictslists)中发生的更改。

示例

基本变更跟踪

这本质上就是sqlalchemymutable JSON recipe。我们定义了一个简单的author模型,该模型列出了作者的姓名以及使用的各种社交媒体句柄的属性handles

classAuthor(Base):name=Column(Text)handles=Column(MutableJson)

下面的示例加载了一个现有的作者,并检索了社交媒体句柄的映射。然后纠正并提交twitter句柄中的错误。sqlalchemy检测到更改,并生成相应的UPDATE语句。

>>>author=session.query(Author).first()>>>author.handles{'twitter':'@JohnDoe','facebook':'JohnDoe'}>>>author.handles['twitter']='@JDoe'>>>session.commit()>>>author.handles{'twitter':'@JDoe','facebook':'JohnDoe'}

嵌套更改跟踪

下面的示例定义了一个简单的文章模型。此模型的属性之一是一个名为references的可变json结构,它包含文章包含的链接计数,按域分组:

classArticle(Base):author=Column(ForeignKey('author.name'))content=Column(Text)references=Column(NestedMutableJson)

在此就绪,加载现有的文章并检查其当前引用。然后,其中一个的计数增加10,会话被提交:

>>>article=session.query(Article).first()>>>article.references{'github.com':{'edelooff/sqlalchemy-json':4,'zzzeek/sqlalchemy':7}}>>>article.references['github.com']['edelooff/sqlalchemy-json']+=10>>>session.commit()>>>article.references{'github.com':{'edelooff/sqlalchemy-json':14,'zzzeek/sqlalchemy':7}}

如果articles模型使用MutableJson,就像前面的示例中那样,那么这段代码将失败。这是因为顶级词典从来没有直接修改过。嵌套的可变的可以确保在较低的级别发生的更改会冒泡到最外层的容器。

依赖关系

  • ^ TT9}$,用于其现有的和数据库引擎特定的本地或模拟JSON类型的选择;
  • six同时支持python 2和3。

更改日志

0.2.2

0.2.1

  • 修复了将0.2.0上载到pypi后在自述文件中发现的一个错误。

0.2.0(未发布)

  • 现在使用SQLAlchemy-utils提供的JSONType来处理后端存储;
  • 向后不兼容:将类名JsonObject更改为MutableJson,将NestedJsonObject更改为NestedMutableJson
  • NestedMutableJson的最外层容器现在可以是array(pythonlist

0.1.0(未发布)

初始版本。它最初的版本号是1.0.0,但从未在pypi上发布过。

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

推荐PyPI第三方库


热门话题
java我的int值在SharedReferences中不被记住   java如何编辑Spring可分页对象?   java如何在gradle中单独调用任务   jvm以编程方式设置最大java堆大小   java如果满足多个条件,如何使用If语句计算数字?   如何在java中从json文件中获取特定值   如何在Sphinx4中为Java语音识别添加自定义语法?   java int[]copy=data;//当数据是数组时会发生什么?   java豪猪管理器。停下来。destroy()不起作用   安卓在API级别28中找不到画布变量   基于SOLID的java冗余   用于talend作业的java Liferay和portlet   从java到安卓的视频流   java获取在控件的类定义中添加自定义控件的场景大小   awt Java IndexOutOfBoundsException   java如何使用Spring JmsTemplate更改MQ头   java遍历数组并打印每个对象   java Google Map api v2标记在我旋转手机和地图“刷新”之前不会移动