本文整理汇总了Python中sqlalchemy.orm.ColumnProperty方法的典型用法代码示例。如果您正苦于以下问题:Python orm.ColumnProperty方法的具体用法?Python orm.ColumnProperty怎么用?Python orm.ColumnProperty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqlalchemy.orm
的用法示例。
在下文中一共展示了orm.ColumnProperty方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from sqlalchemy import orm [as 别名]
# 或者: from sqlalchemy.orm import ColumnProperty [as 别名]
def __init__(self, columns: Mapping[str, ColumnProperty]):
""" Init columns
:param columns: Model columns
"""
super(ColumnsBag, self).__init__(columns)
# More info about columns based on their type
self._array_column_names = frozenset(name
for name, col in self._columns.items()
if _is_column_array(col))
self._json_column_names = frozenset(name
for name, col in self._columns.items()
if _is_column_json(col))
示例2: __getitem__
# 需要导入模块: from sqlalchemy import orm [as 别名]
# 或者: from sqlalchemy.orm import ColumnProperty [as 别名]
def __getitem__(self, name: str) -> Union[ColumnProperty, BinaryExpression]:
column_name, path = _dot_notation(name)
col = super(DotColumnsBag, self).__getitem__(column_name)
# JSON path
if path:
if self.is_column_json(column_name):
col = col[path].astext
else:
raise KeyError(name)
return col
示例3: get_column
# 需要导入模块: from sqlalchemy import orm [as 别名]
# 或者: from sqlalchemy.orm import ColumnProperty [as 别名]
def get_column(self, name: str) -> ColumnProperty:
""" Get a column, not a JSON path """
return self[get_plain_column_name(name)]
示例4: columns
# 需要导入模块: from sqlalchemy import orm [as 别名]
# 或者: from sqlalchemy.orm import ColumnProperty [as 别名]
def columns(cls):
return [prop for prop in class_mapper(cls).iterate_properties
if isinstance(prop, ColumnProperty)]
示例5: enum_for_field
# 需要导入模块: from sqlalchemy import orm [as 别名]
# 或者: from sqlalchemy.orm import ColumnProperty [as 别名]
def enum_for_field(obj_type, field_name):
"""Return the Graphene Enum type for the specified Graphene field."""
from .types import SQLAlchemyObjectType
if not isinstance(obj_type, type) or not issubclass(obj_type, SQLAlchemyObjectType):
raise TypeError(
"Expected SQLAlchemyObjectType, but got: {!r}".format(obj_type))
if not field_name or not isinstance(field_name, six.string_types):
raise TypeError(
"Expected a field name, but got: {!r}".format(field_name))
registry = obj_type._meta.registry
orm_field = registry.get_orm_field_for_graphene_field(obj_type, field_name)
if orm_field is None:
raise TypeError("Cannot get {}.{}".format(obj_type._meta.name, field_name))
if not isinstance(orm_field, ColumnProperty):
raise TypeError(
"{}.{} does not map to model column".format(obj_type._meta.name, field_name)
)
column = orm_field.columns[0]
sa_enum = column.type
if not isinstance(sa_enum, SQLAlchemyEnumType):
raise TypeError(
"{}.{} does not map to enum column".format(obj_type._meta.name, field_name)
)
enum = registry.get_graphene_enum_for_sa_enum(sa_enum)
if not enum:
fallback_name = obj_type._meta.name + to_type_name(field_name)
enum = _convert_sa_to_graphene_enum(sa_enum, fallback_name)
registry.register_enum(sa_enum, enum)
return enum
示例6: primary_key_names
# 需要导入模块: from sqlalchemy import orm [as 别名]
# 或者: from sqlalchemy.orm import ColumnProperty [as 别名]
def primary_key_names(model):
"""Returns all the primary keys for a model."""
return [key for key, field in inspect.getmembers(model)
if isinstance(field, QueryableAttribute)
and isinstance(field.property, ColumnProperty)
and field.property.columns[0].primary_key]
示例7: apply_nested_fields
# 需要导入模块: from sqlalchemy import orm [as 别名]
# 或者: from sqlalchemy.orm import ColumnProperty [as 别名]
def apply_nested_fields(self, data, obj):
nested_fields_to_apply = []
nested_fields = get_nested_fields(self.resource.schema, model_field=True)
for key, value in data.items():
if key in nested_fields:
nested_field_inspection = inspect(getattr(obj.__class__, key))
if not isinstance(nested_field_inspection, QueryableAttribute):
raise InvalidType("Unrecognized nested field type: not a queryable attribute.")
if isinstance(nested_field_inspection.property, RelationshipProperty):
nested_model = getattr(obj.__class__, key).property.mapper.class_
if isinstance(value, list):
nested_objects = []
for identifier in value:
nested_object = nested_model(**identifier)
nested_objects.append(nested_object)
nested_fields_to_apply.append({'field': key, 'value': nested_objects})
else:
nested_fields_to_apply.append({'field': key, 'value': nested_model(**value)})
elif isinstance(nested_field_inspection.property, ColumnProperty):
nested_fields_to_apply.append({'field': key, 'value': value})
else:
raise InvalidType("Unrecognized nested field type: not a RelationshipProperty or ColumnProperty.")
for nested_field in nested_fields_to_apply:
setattr(obj, nested_field['field'], nested_field['value'])