当前位置: 首页>>代码示例>>Python>>正文


Python sqlalchemy.inspect方法代码示例

本文整理汇总了Python中sqlalchemy.inspect方法的典型用法代码示例。如果您正苦于以下问题:Python sqlalchemy.inspect方法的具体用法?Python sqlalchemy.inspect怎么用?Python sqlalchemy.inspect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在sqlalchemy的用法示例。


在下文中一共展示了sqlalchemy.inspect方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: jsonify

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def jsonify(self):
        d = {
            "id": self.id,
            "creator": self.creator,
            "name": self.name,
            "unit": self.unit,
        }
        unloaded = sqlalchemy.inspect(self).unloaded
        if 'resource' in unloaded:
            d['resource_id'] = self.resource_id
        else:
            d['resource'] = self.resource
        if 'archive_policy' in unloaded:
            d['archive_policy_name'] = self.archive_policy_name
        else:
            d['archive_policy'] = self.archive_policy

        if self.creator is None:
            d['created_by_user_id'] = d['created_by_project_id'] = None
        else:
            d['created_by_user_id'], _, d['created_by_project_id'] = (
                self.creator.partition(":")
            )

        return d 
开发者ID:gnocchixyz,项目名称:gnocchi,代码行数:27,代码来源:sqlalchemy_base.py

示例2: upgrade

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def upgrade():
    conn = op.get_bind()

    insp = inspect(conn)
    fk_names = [fk['name'] for fk in insp.get_foreign_keys('host')]
    if ("fk_hypervisor_id_resource_id" not in fk_names and
            "fk_host_id_resource_id" in fk_names):
        # NOTE(sileht): we are already good, the BD have been created from
        # scratch after "a54c57ada3f5"
        return

    op.drop_constraint("fk_hypervisor_id_resource_id", "host",
                       type_="foreignkey")
    op.drop_constraint("fk_hypervisor_history_resource_history_revision",
                       "host_history", type_="foreignkey")
    op.create_foreign_key("fk_host_id_resource_id", "host", "resource",
                          ["id"], ["id"], ondelete="CASCADE")
    op.create_foreign_key("fk_host_history_resource_history_revision",
                          "host_history", "resource_history",
                          ["revision"], ["revision"], ondelete="CASCADE") 
开发者ID:gnocchixyz,项目名称:gnocchi,代码行数:22,代码来源:ed9c6ddc5c35_fix_host_foreign_key.py

示例3: _test_get_table_names

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def _test_get_table_names(self, schema=None, table_type='table',
                              order_by=None):
        meta = self.metadata
        users, addresses, dingalings = self.tables.users, \
            self.tables.email_addresses, self.tables.dingalings
        insp = inspect(meta.bind)

        if table_type == 'view':
            table_names = insp.get_view_names(schema)
            table_names.sort()
            answer = ['email_addresses_v', 'users_v']
            eq_(sorted(table_names), answer)
        else:
            table_names = insp.get_table_names(schema,
                                               order_by=order_by)
            if order_by == 'foreign_key':
                answer = ['users', 'email_addresses', 'dingalings']
                eq_(table_names, answer)
            else:
                answer = ['dingalings', 'email_addresses', 'users']
                eq_(sorted(table_names), answer) 
开发者ID:jpush,项目名称:jbox,代码行数:23,代码来源:test_reflection.py

示例4: _test_get_indexes

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def _test_get_indexes(self, schema=None):
        meta = self.metadata
        users, addresses, dingalings = self.tables.users, \
            self.tables.email_addresses, self.tables.dingalings
        # The database may decide to create indexes for foreign keys, etc.
        # so there may be more indexes than expected.
        insp = inspect(meta.bind)
        indexes = insp.get_indexes('users', schema=schema)
        expected_indexes = [
            {'unique': False,
             'column_names': ['test1', 'test2'],
             'name': 'users_t_idx'},
            {'unique': False,
             'column_names': ['user_id', 'test2', 'test1'],
             'name': 'users_all_idx'}
        ]
        index_names = [d['name'] for d in indexes]
        for e_index in expected_indexes:
            assert e_index['name'] in index_names
            index = indexes[index_names.index(e_index['name'])]
            for key in e_index:
                eq_(e_index[key], index[key]) 
开发者ID:jpush,项目名称:jbox,代码行数:24,代码来源:test_reflection.py

示例5: test_autoincrement_col

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def test_autoincrement_col(self):
        """test that 'autoincrement' is reflected according to sqla's policy.

        Don't mark this test as unsupported for any backend !

        (technically it fails with MySQL InnoDB since "id" comes before "id2")

        A backend is better off not returning "autoincrement" at all,
        instead of potentially returning "False" for an auto-incrementing
        primary key column.

        """

        meta = self.metadata
        insp = inspect(meta.bind)

        for tname, cname in [
            ('users', 'user_id'),
            ('email_addresses', 'address_id'),
            ('dingalings', 'dingaling_id'),
        ]:
            cols = insp.get_columns(tname)
            id_ = dict((c['name'], c) for c in cols)[cname]
            assert id_.get('autoincrement', True) 
开发者ID:jpush,项目名称:jbox,代码行数:26,代码来源:test_reflection.py

示例6: force_drop_names

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def force_drop_names(*names):
    """Force the given table names to be dropped after test complete,
    isolating for foreign key cycles

    """
    from . import config
    from sqlalchemy import inspect

    @decorator
    def go(fn, *args, **kw):

        try:
            return fn(*args, **kw)
        finally:
            drop_all_tables(
                config.db, inspect(config.db), include_names=names)
    return go 
开发者ID:jpush,项目名称:jbox,代码行数:19,代码来源:util.py

示例7: __init__

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def __init__(self, obj, visited_objects=None, relations=[]):
        self.visited_objects = visited_objects or []
        self.obj = obj
        self.version_parent = self.obj.version_parent
        self.parent_class = parent_class(self.obj.__class__)
        self.parent_mapper = sa.inspect(self.parent_class)
        self.session = sa.orm.object_session(self.obj)

        self.relations = list(relations)
        for path in relations:
            subpath = path.split('.')[0]
            if subpath not in self.parent_mapper.relationships:
                raise ReverterException(
                    "Could not initialize Reverter. Class '%s' does not have "
                    "relationship '%s'." % (
                        parent_class(self.obj.__class__).__name__,
                        subpath
                    )
                ) 
开发者ID:fake-name,项目名称:ReadableWebProxy,代码行数:21,代码来源:reverter.py

示例8: option

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def option(obj_or_class, option_name):
    """
    Return the option value of given option for given versioned object or
    class.

    :param obj_or_class: SQLAlchemy declarative model object or class
    :param option_name: The name of an option to return
    """
    if isinstance(obj_or_class, AliasedClass):
        obj_or_class = sa.inspect(obj_or_class).mapper.class_
    cls = obj_or_class if isclass(obj_or_class) else obj_or_class.__class__
    if not hasattr(cls, '__versioned__'):
        cls = parent_class(cls)
    return get_versioning_manager(cls).option(
        cls, option_name
    ) 
开发者ID:fake-name,项目名称:ReadableWebProxy,代码行数:18,代码来源:utils.py

示例9: get_inherited_denormalized_columns

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def get_inherited_denormalized_columns(self, table):
        parent_models = list(versioned_parents(self.manager, self.model))
        mapper = sa.inspect(self.model)
        args = {}

        if parent_models and not (mapper.single or mapper.concrete):
            columns = [
                self.manager.option(self.model, 'operation_type_column_name'),
                self.manager.option(self.model, 'transaction_column_name')
            ]
            if self.manager.option(self.model, 'strategy') == 'validity':
                columns.append(
                    self.manager.option(
                        self.model,
                        'end_transaction_column_name'
                    )
                )

            for column in columns:
                args[column] = column_property(
                    table.c[column],
                    *[m.__table__.c[column] for m in parent_models]
                )
        return args 
开发者ID:fake-name,项目名称:ReadableWebProxy,代码行数:26,代码来源:model_builder.py

示例10: changeset

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def changeset(self):
        """
        Return a dictionary of changed fields in this version with keys as
        field names and values as lists with first value as the old field value
        and second list value as the new value.
        """
        previous_version = self.previous
        data = {}

        for key in sa.inspect(self.__class__).columns.keys():
            if is_internal_column(self, key):
                continue
            if not previous_version:
                old = None
            else:
                old = getattr(previous_version, key)
            new = getattr(self, key)
            if old != new:
                data[key] = [old, new]

        manager = get_versioning_manager(self)
        manager.plugins.after_construct_changeset(self, data)
        return data 
开发者ID:fake-name,项目名称:ReadableWebProxy,代码行数:25,代码来源:version.py

示例11: object_as_dict

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def object_as_dict(obj, relationships=False):
    """
    Converts an SQLAlchemy instance to a dictionary.

    :param relationships: If true, also include relationships in the output dict
    """
    properties = inspect(obj).mapper.all_orm_descriptors

    if not relationships:
        properties = {
            key: value
            for key, value in properties.items()
            if not hasattr(value, "prop")
            or not isinstance(value.prop, RelationshipProperty)
        }

    return {key: getattr(obj, key) for key, value in properties.items()} 
开发者ID:ewels,项目名称:MegaQC,代码行数:19,代码来源:test_api.py

示例12: aliased_attrs

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def aliased_attrs(cls, aliased_class: AliasedClass, obj: object, *attr_names: str):
        """ Wrap a whole list of dictionaries into aliased wrappers """
        # Prepare AliasedInsp: this is what adapt_to_entity() wants
        aliased_inspector = inspect(aliased_class)
        assert aliased_inspector.is_aliased_class, '`aliased_class` must be an alias!'

        # Convert every attribute
        for attr_name in attr_names:
            setattr(obj, attr_name,
                    # Wrap it with self
                    cls(getattr(obj, attr_name),
                        aliased_inspector)
                    )

        # Done
        return obj 
开发者ID:kolypto,项目名称:py-mongosql,代码行数:18,代码来源:bag.py

示例13: sqlalchemy_to_dict

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def sqlalchemy_to_dict(obj):
    """Convert SQLAlchemy object to dict.

    Args:
        query (class): SQLAlchemy Object.

    Returns:
        dict: Return a dict representation of an SQLAlchemy object.

    """
    fields = {}
    for field in [c.key for c in inspect(obj).mapper.column_attrs]:
        data = obj.__getattribute__(field)
        try:
            if isinstance(data, datetime):
                data = data.strftime('%Y-%m-%d %H:%M:%S')
            json.dumps(data)
            fields[field] = data
        except TypeError:
            fields[field] = None
    return fields 
开发者ID:lucasayres,项目名称:python-tools,代码行数:23,代码来源:sqlalchemy_to_dict.py

示例14: test_create_table_unknown_mysql_connector_error

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def test_create_table_unknown_mysql_connector_error(
        self, sqlite_database, mysql_database, mysql_credentials, mocker, caplog
    ):
        proc = MySQLtoSQLite(
            sqlite_file=sqlite_database,
            mysql_user=mysql_credentials.user,
            mysql_password=mysql_credentials.password,
            mysql_database=mysql_credentials.database,
            mysql_host=mysql_credentials.host,
            mysql_port=mysql_credentials.port,
        )

        class FakeSQLiteCursor:
            def executescript(self, statement):
                raise mysql.connector.Error(
                    msg="Error Code: 2000. Unknown MySQL error",
                    errno=errorcode.CR_UNKNOWN_ERROR,
                )

        mysql_inspect = inspect(mysql_database.engine)
        mysql_tables = mysql_inspect.get_table_names()
        mocker.patch.object(proc, "_sqlite_cur", FakeSQLiteCursor())
        caplog.set_level(logging.DEBUG)
        with pytest.raises(mysql.connector.Error):
            proc._create_table(choice(mysql_tables)) 
开发者ID:techouse,项目名称:mysql-to-sqlite3,代码行数:27,代码来源:mysql_to_sqlite3_test.py

示例15: test_create_table_sqlite3_error

# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import inspect [as 别名]
def test_create_table_sqlite3_error(
        self, sqlite_database, mysql_database, mysql_credentials, mocker, caplog
    ):
        proc = MySQLtoSQLite(
            sqlite_file=sqlite_database,
            mysql_user=mysql_credentials.user,
            mysql_password=mysql_credentials.password,
            mysql_database=mysql_credentials.database,
            mysql_host=mysql_credentials.host,
            mysql_port=mysql_credentials.port,
        )

        class FakeSQLiteCursor:
            def executescript(self, *args, **kwargs):
                raise sqlite3.Error("Unknown SQLite error")

        mysql_inspect = inspect(mysql_database.engine)
        mysql_tables = mysql_inspect.get_table_names()
        mocker.patch.object(proc, "_sqlite_cur", FakeSQLiteCursor())
        caplog.set_level(logging.DEBUG)
        with pytest.raises(sqlite3.Error):
            proc._create_table(choice(mysql_tables)) 
开发者ID:techouse,项目名称:mysql-to-sqlite3,代码行数:24,代码来源:mysql_to_sqlite3_test.py


注:本文中的sqlalchemy.inspect方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。