支持使用sqlalchemy的各种实用函数。

cs.sqlalchemy-utils的Python项目详细描述


最新版本20190830.1: 设置装饰器。模块

支持使用sqlalchemy的各种实用功能。

功能自动会话(func)

decorator在会话中运行一个函数(如果没有预先应用)。 函数func在事务中运行, 如果会话已存在,则嵌套。

有关详细信息,请参见with_session

函数find_json_field(column_value,field_name,*,infll=false)

下降jsunable python对象列值字段名。 返回列值(可能已填充),最终字段最终字段名

这支持json列的数据库行列。

参数:

  • 列值:列的原始值
  • 字段名:要定位的列中的字段
  • infll:可选关键字参数,默认值为false。 如果属实, 列值及其内部将填写为dicts 允许推迟字段名

字段u name是一个str 由一个句点('.)分隔的字段部分序列组成。 每个字段部分都成为索引列映射的键。 这些键被分成前导字段部分 最后一部分, 返回为上面的final_field_name

上面的final_字段返回值 是final_field_value可能位于其中的映射 其中可以设置final_field_value。 注意:它可能不存在。

如果缺少前导键且infll为true 列的相应部分设置为空字典 以便允许延迟前导密钥。 这包括column_value本身是none的情况, 这就是为什么列的值是返回值的一部分。

如果缺少前导键且infll为false 此函数将引发一个键错误 对于字段名中失败的部分。

示例:

>>> find_json_field({'a':{'b':{}}}, 'a.b')
({'a': {'b': {}}}, {'b': {}}, 'b')
>>> find_json_field({'a':{}}, 'a.b')
({'a': {}}, {}, 'b')
>>> find_json_field({'a':{'b':{}}}, 'a.b.c.d')
Traceback (most recent call last):
    ...
KeyError: 'a.b.c'
>>> find_json_field({'a':{'b':{}}}, 'a.b.c.d', infill=True)
({'a': {'b': {'c': {}}}}, {}, 'd')
>>> find_json_field(None, 'a.b.c.d')
Traceback (most recent call last):
    ...
KeyError: 'a'
>>> find_json_field(None, 'a.b.c.d', infill=True)
({'a': {'b': {'c': {}}}}, {}, 'd')

函数get_json_field(column_value,field_name,*,default=none)

返回字段名的值 如果字段不存在,则返回default。

参数:

  • 列值:列的原始值
  • 字段名:要定位的列中的字段
  • 默认值:如果字段不存在,则返回默认值, 默认值:

示例:

>>> get_json_field({'a': 1}, 'a')
1
>>> get_json_field({'b': 1}, 'a')
>>> get_json_field({'a': {}}, 'a.b')
>>> get_json_field({'a': {'b': 2}}, 'a.b')
2

函数json_列(*da,**dkw)

类装饰器,用于在表上声明虚拟列名 值位于表的json列中。

参数:

  • cls:要注释的类
  • attr:作为行属性显示的虚拟列名
  • json\u field\u name:json列中的字段 用于存储此值, 默认值与attr相同
  • json_column_name:关联的json列的名称, 默认'info'
  • 默认值:getter返回的默认值 如果字段不存在, 默认值

示例使用:

Base = declarative_base()
...
@json_column('virtual_name', 'json.field.name')
class TableClass(Base):
  ...

这将使用属性注释类。virtual\u name属性 可以访问或设置, 访问或修改关联的json列 (在本例中,列info, 访问info['json']['field']['name'])。

功能日志级别(*da,**dkw)

decorator在指定的日志级别运行func,默认值为logging.debug

类别<化学需氧量e>orm

mro:cs.resources.multiopenmixin
ORM类的方便基类。

这将定义一个.base属性,该属性是一个新的声明数据库 并提供各种与会话相关的便利方法。 它也是一个multiopenmixin子类 支持嵌套的打开/关闭序列并用作上下文管理器。

子类必须定义以下内容:

  • .session:一个位于自己的工厂,通常是 self.session=sessionmaker(bind=engine)
  • .startup.shutdown方法来支持多openmixin, 即使这些只是通过

函数orm_auto_session(方法)

decorator在从self.orm派生的会话中运行方法。 如果一个会话没有被预先应用。 旨在帮助类使用.orm属性。

有关详细信息,请参见with_session

功能推送日志级别(级别)

临时将默认sqlalchemy logger的级别设置为level。 生成记录器。

注意:这不是mt-safe-竞争线程可以将日志级别混合起来。

函数set_json_field(column_value,field_name,value,*,infll=false)

列值的字段名设置一个新的值。 返回新的列值

参数:

  • 列值:列的原始值
  • 字段名:要定位的列中的字段
  • :要存储为字段名的值
  • infll:可选关键字参数,默认值为false。 如果属实, 列值及其内部将填写为dicts 允许推迟字段名

find_json_field一样, 一个trueinfl可以修改列值以提供字段名 这就是为什么此函数返回新的列值

示例:

>>> set_json_field({'a': 2}, 'a', 3)
{'a': 3}
>>> set_json_field({'a': 2, 'b': {'c': 5}}, 'b.c', 4)
{'a': 2, 'b': {'c': 4}}
>>> set_json_field({'a': 2}, 'b.c', 4)
Traceback (most recent call last):
    ...
KeyError: 'b'
>>> set_json_field({'a': 2}, 'b.c', 4, infill=True)
{'a': 2, 'b': {'c': 4}}
>>> set_json_field(None, 'b.c', 4, infill=True)
{'b': {'c': 4}}

函数与会话(func,*a,orm=none,session=none,**kw)

调用func(*a,session=session,**kw),根据需要创建会话。 函数func在事务中运行, 如果会话已存在,则嵌套。

这是@auto_sessionorm.auto\u会话

参数:

  • 函数:要调用的函数
  • a:位置参数
  • orm:带有.session()上下文管理器方法的可选orm类 例如本模块提供的orm基类。
  • 会话:可选的现有ORM会话
  • kw:其他关键字参数,传递给func

ormsession中的一个不能none;如果session 如果none则从orm.session()生成一个并用作 上下文管理器。

会话也作为 关键字参数session支持嵌套调用。

发布日志

发布日期20190830.1: 设置装饰器。模块

发布日期20190830: @json_列:小的docstring改进。

发布日期20190829: bugfix@json_column setter:将该列标记为orm的已修改列。 新的push_log_级别上下文管理器和@log_级别装饰器,用于临时更改sqlalchemy日志处理程序级别。

发布日期20190812: 使orm成为多openmixin。 get_json_字段:使用忘记的默认值参数。 其他小改动。

发布日期20190526: 支持映射到json列interio的虚拟列r值: 新函数find_json_field,get_json_field,set_json_field。 用于去极化基表的新decorator@json\u列。

发布日期20190517: 将orm.u会话专用会话工厂设为公共orm.session工厂供外部使用。 与会话:预先存在的会话仍会触发会话。开始嵌套,消除其他地方的刷新/提交张力。

发布日期20190403: 将@orm.orm_auto_会话重命名为@orm.auto_会话。 新的@orm_auto_session decorator,用于具有.orm属性的对象的方法。

发布日期20190319.1: 初次发布。orm基类,@auto_session decorator。

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

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归