本文整理汇总了Python中sqlalchemy.join方法的典型用法代码示例。如果您正苦于以下问题:Python sqlalchemy.join方法的具体用法?Python sqlalchemy.join怎么用?Python sqlalchemy.join使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqlalchemy
的用法示例。
在下文中一共展示了sqlalchemy.join方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: load_all_user
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def load_all_user(cls, context, access_key):
async with context['dbpool'].acquire() as conn:
query = (sa.select([keypairs.c.user_id])
.select_from(keypairs)
.where(keypairs.c.access_key == access_key))
result = await conn.execute(query)
row = await result.fetchone()
user_id = row['user_id']
j = sa.join(
keypairs, keypair_resource_policies,
keypairs.c.resource_policy == keypair_resource_policies.c.name
)
query = (sa.select([keypair_resource_policies])
.select_from(j)
.where((keypairs.c.user_id == user_id)))
return [cls.from_row(context, r) async for r in conn.execute(query)]
示例2: batch_load_by_name_user
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def batch_load_by_name_user(cls, context, names):
async with context['dbpool'].acquire() as conn:
access_key = context['access_key']
j = sa.join(
keypairs, keypair_resource_policies,
keypairs.c.resource_policy == keypair_resource_policies.c.name
)
query = (sa.select([keypair_resource_policies])
.select_from(j)
.where((keypair_resource_policies.c.name.in_(names)) &
(keypairs.c.access_key == access_key))
.order_by(keypair_resource_policies.c.name))
return await batch_result(
context, conn, query, cls,
names, lambda row: row['name'],
)
示例3: load_count
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def load_count(cls, context, *,
domain_name=None, group_id=None, user_id=None):
from .user import users
async with context['dbpool'].acquire() as conn:
j = sa.join(vfolders, users, vfolders.c.user == users.c.uuid)
query = (
sa.select([sa.func.count(vfolders.c.id)])
.select_from(j)
.as_scalar()
)
if domain_name is not None:
query = query.where(users.c.domain_name == domain_name)
if group_id is not None:
query = query.where(vfolders.c.group == group_id)
if user_id is not None:
query = query.where(vfolders.c.user == user_id)
result = await conn.execute(query)
count = await result.fetchone()
return count[0]
示例4: load_slice
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def load_slice(cls, context, limit, offset, *,
domain_name=None, group_id=None, user_id=None,
order_key=None, order_asc=None):
from .user import users
async with context['dbpool'].acquire() as conn:
if order_key is None:
_ordering = vfolders.c.created_at
else:
_order_func = sa.asc if order_asc else sa.desc
_ordering = _order_func(getattr(vfolders.c, order_key))
j = sa.join(vfolders, users, vfolders.c.user == users.c.uuid)
query = (
sa.select([vfolders])
.select_from(j)
.order_by(_ordering)
.limit(limit)
.offset(offset)
)
if domain_name is not None:
query = query.where(users.c.domain_name == domain_name)
if group_id is not None:
query = query.where(vfolders.c.group == group_id)
if user_id is not None:
query = query.where(vfolders.c.user == user_id)
return [cls.from_row(context, r) async for r in conn.execute(query)]
示例5: batch_load_by_user
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def batch_load_by_user(cls, context, user_uuids, *,
domain_name=None, group_id=None):
from .user import users
async with context['dbpool'].acquire() as conn:
# TODO: num_attached count group-by
j = sa.join(vfolders, users, vfolders.c.user == users.c.uuid)
query = (
sa.select([vfolders])
.select_from(j)
.where(vfolders.c.user.in_(user_uuids))
.order_by(sa.desc(vfolders.c.created_at))
)
if domain_name is not None:
query = query.where(users.c.domain_name == domain_name)
if group_id is not None:
query = query.where(vfolders.c.group == group_id)
return await batch_multiresult(
context, conn, query, cls,
user_uuids, lambda row: row['user']
)
示例6: batch_load_detail
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def batch_load_detail(cls, context, container_ids, *,
domain_name=None, access_key=None):
async with context['dbpool'].acquire() as conn:
j = (
kernels
.join(groups, groups.c.id == kernels.c.group_id)
.join(users, users.c.uuid == kernels.c.user_uuid)
)
query = (
sa.select([kernels, groups.c.name, users.c.email])
.select_from(j)
.where(
(kernels.c.id.in_(container_ids))
))
if domain_name is not None:
query = query.where(kernels.c.domain_name == domain_name)
if access_key is not None:
query = query.where(kernels.c.access_key == access_key)
return await batch_result(
context, conn, query, cls,
container_ids, lambda row: row['id'],
)
示例7: batch_load_by_dependency
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def batch_load_by_dependency(cls, context, session_ids):
async with context['dbpool'].acquire() as conn:
j = sa.join(
kernels, kernel_dependencies,
kernels.c.id == kernel_dependencies.c.depends_on,
)
query = (
sa.select([kernels])
.select_from(j)
.where(
(kernels.c.role == 'master') &
(kernel_dependencies.c.kernel_id.in_(session_ids))
)
)
return await batch_multiresult(
context, conn, query, cls,
session_ids, lambda row: row['id'],
)
示例8: load_all
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def load_all(
cls, context, *,
domain_name=None,
is_active=None,
limit=None,
) -> Sequence[KeyPair]:
from .user import users
async with context['dbpool'].acquire() as conn:
j = sa.join(keypairs, users, keypairs.c.user == users.c.uuid)
query = (
sa.select([keypairs])
.select_from(j)
)
if domain_name is not None:
query = query.where(users.c.domain_name == domain_name)
if is_active is not None:
query = query.where(keypairs.c.is_active == is_active)
if limit is not None:
query = query.limit(limit)
return [
cls.from_row(context, row) async for row in conn.execute(query)
]
示例9: load_count
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def load_count(
context, *,
domain_name=None,
email=None,
is_active=None,
) -> int:
from .user import users
async with context['dbpool'].acquire() as conn:
j = sa.join(keypairs, users, keypairs.c.user == users.c.uuid)
query = (
sa.select([sa.func.count(keypairs.c.access_key)])
.select_from(j)
.as_scalar()
)
if domain_name is not None:
query = query.where(users.c.domain_name == domain_name)
if email is not None:
query = query.where(keypairs.c.user_id == email)
if is_active is not None:
query = query.where(keypairs.c.is_active == is_active)
result = await conn.execute(query)
count = await result.fetchone()
return count[0]
示例10: batch_load_by_email
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def batch_load_by_email(
cls, context, user_ids, *,
domain_name=None, is_active=None,
) -> Sequence[Sequence[Optional[KeyPair]]]:
from .user import users
async with context['dbpool'].acquire() as conn:
j = sa.join(keypairs, users, keypairs.c.user == users.c.uuid)
query = (sa.select([keypairs])
.select_from(j)
.where(keypairs.c.user_id.in_(user_ids)))
if domain_name is not None:
query = query.where(users.c.domain_name == domain_name)
if is_active is not None:
query = query.where(keypairs.c.is_active == is_active)
return await batch_multiresult(
context, conn, query, cls,
user_ids, lambda row: row['user_id'],
)
示例11: usage_per_month
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def usage_per_month(request: web.Request, params: Any) -> web.Response:
'''
Return usage statistics of terminated containers belonged to the given group for a specified
period in dates.
The date/time comparison is done using the configured timezone.
:param year int: The year.
:param month int: The month.
'''
log.info('USAGE_PER_MONTH (g:[{}], month:{})',
','.join(params['group_ids']), params['month'])
local_tz = request.app['config']['system']['timezone']
try:
start_date = datetime.strptime(params['month'], '%Y%m').replace(tzinfo=local_tz)
end_date = start_date + relativedelta(months=+1)
except ValueError:
raise InvalidAPIParameters(extra_msg='Invalid date values')
resp = await get_container_stats_for_period(request, start_date, end_date, params['group_ids'])
log.debug('container list are retrieved for month {0}', params['month'])
return web.json_response(resp, status=200)
示例12: __init__
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def __init__(self, left, right, onclause=None, isouter=False):
"""Construct a new :class:`.Join`.
The usual entrypoint here is the :func:`~.expression.join`
function or the :meth:`.FromClause.join` method of any
:class:`.FromClause` object.
"""
self.left = _interpret_as_from(left)
self.right = _interpret_as_from(right).self_group()
if onclause is None:
self.onclause = self._match_primaries(self.left, self.right)
else:
self.onclause = onclause
self.isouter = isouter
示例13: largest_groups
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def largest_groups(cls, limit=10):
member = table('member')
package = table('package')
j = join(member, package,
member.c.table_id == package.c.id)
s = select([member.c.group_id, func.count(member.c.table_id)]).\
select_from(j).\
group_by(member.c.group_id).\
where(and_(member.c.group_id!=None, member.c.table_name=='package', package.c.private==False, package.c.state=='active')).\
order_by(func.count(member.c.table_id).desc()).\
limit(limit)
res_ids = model.Session.execute(s).fetchall()
res_groups = [(model.Session.query(model.Group).get(unicode(group_id)), val) for group_id, val in res_ids]
return res_groups
示例14: add
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def add(self, local_columns, remote_columns, **kwargs):
""" Add a new foreign key
:param remote_field: The column of the remote model
:rtype: MigrationConstraintForeignKey instance
"""
remote_columns = [
x.property.columns[0] if hasattr(x, 'property') else x
for x in remote_columns]
remote_table = set(x.table.name for x in remote_columns)
if len(remote_table) != 1:
raise MigrationException("Remote column must have the same table "
"(%s)" % ', '.join(remote_table))
remote_table = remote_table.pop()
remote_columns_names = [x.name for x in remote_columns]
self.table.migration.operation.create_foreign_key(
self.name, self.table.name, remote_table,
local_columns, remote_columns_names,
source_schema=self.table.schema,
referent_schema=remote_columns[0].table.schema,
**kwargs)
return self
示例15: __init__
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import join [as 别名]
def __init__(self, left, right, onclause=None, isouter=False, full=False):
"""Construct a new :class:`.Join`.
The usual entrypoint here is the :func:`~.expression.join`
function or the :meth:`.FromClause.join` method of any
:class:`.FromClause` object.
"""
self.left = _interpret_as_from(left)
self.right = _interpret_as_from(right).self_group()
if onclause is None:
self.onclause = self._match_primaries(self.left, self.right)
else:
self.onclause = onclause
self.isouter = isouter
self.full = full