Пример #1
0
class ViewTable(object):
    """A table to be joined in."""

    def __init__(self, config, view, data):
        self.config = config
        self.view = view
        if isinstance(data, six.string_types):
            data = {'table': data}
        self.data = data
        self.table_ref = data.get('table')
        self.alias = data.get('alias', self.table_ref)

    @property
    def table(self):
        if not hasattr(self, '_table'):
            self._table = Table(self.table_ref, self.config.meta,
                                autoload=True)
            if self.alias != self._table.name:
                self._table = self._table.alias(self.alias)
        return self._table

    @property
    def refs(self):
        if not hasattr(self, '_refs'):
            self._refs = {}
            for column in self.table.columns:
                name = '%s.%s' % (self.alias, column.name)
                self._refs[name] = column
        return self._refs
Пример #2
0
class QueryTable(object):
    """A table to be joined in."""
    def __init__(self, query, data):
        self.query = query
        if isinstance(data, six.string_types):
            data = {'table': data}
        self.data = data
        self.table_ref = data.get('table')
        self.alias_ref = data.get('alias', self.table_ref)
        self.table = Table(self.table_ref, self.query.meta, autoload=True)
        self.alias = self.table.alias(self.alias_ref)

        self.refs = {}
        for column in self.alias.columns:
            name = '%s.%s' % (self.alias_ref, column.name)
            labeled_column = column.label('col_%s' % uuid4().hex[:10])
            self.refs[name] = labeled_column
            self.refs[column.name] = labeled_column
Пример #3
0
class QueryTable(object):
    """A table to be joined in."""
    def __init__(self, meta: MetaData, data: Union[str, Dict[str,
                                                             str]]) -> None:
        if isinstance(data, str):
            data = {"table": data}
        table_ref = data.get("table")
        if table_ref is None:
            raise InvalidMapping("Query has no table!")
        alias_ref = data.get("alias", table_ref)
        self.table = Table(table_ref, meta, autoload=True)
        self.alias = self.table.alias(alias_ref)

        self.refs: Dict[str, Label[Any]] = {}
        for column in self.alias.columns:
            name = "%s.%s" % (alias_ref, column.name)
            labeled_column = column.label("col_%s" % uuid4().hex[:10])
            self.refs[name] = labeled_column
            self.refs[column.name] = labeled_column
Пример #4
0
 def test_alias_proxy(self):
     t = Table('t', MetaData(),
             Column('foo', self._add_override_factory())
         )
     proxied = t.alias().c.foo
     self._assert_add_override(proxied)
Пример #5
0
 def test_alias_proxy(self):
     t = Table('t', MetaData(),
             Column('foo', self._add_override_factory())
         )
     proxied = t.alias().c.foo
     self._assert_add_override(proxied)
Пример #6
0
 def table(self):
     table = Table(self.table_ref, self.config.meta, autoload=True)
     if self.alias != table.name:
         table = table.alias(self.alias)
     return table