Python sqlalchemy.select() Examples
The following are 30
code examples of sqlalchemy.select().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
sqlalchemy
, or try the search function
.
Example #1
Source File: domain.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def mutate(cls, root, info, name, props): if _rx_slug.search(name) is None: return cls(False, 'invalid name format. slug format required.', None) data = { 'name': name, 'description': props.description, 'is_active': props.is_active, 'total_resource_slots': ResourceSlot.from_user_input( props.total_resource_slots, None), 'allowed_vfolder_hosts': props.allowed_vfolder_hosts, 'allowed_docker_registries': props.allowed_docker_registries, 'integration_id': props.integration_id, } insert_query = ( domains.insert() .values(data) ) item_query = domains.select().where(domains.c.name == name) return await simple_db_mutate_returning_item( cls, info.context, insert_query, item_query=item_query, item_cls=Domain)
Example #2
Source File: keypair.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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) ]
Example #3
Source File: kernel.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def recalc_concurrency_used(db_conn: SAConnection, access_key: AccessKey) -> None: query = ( sa.update(keypairs) .values( concurrency_used=( sa.select([sa.func.count(kernels.c.id)]) .select_from(kernels) .where( (kernels.c.access_key == access_key) & (kernels.c.status.in_(USER_RESOURCE_OCCUPYING_KERNEL_STATUSES)) ) .as_scalar() ), ) .where(keypairs.c.access_key == access_key) ) await db_conn.execute(query)
Example #4
Source File: keypair.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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'], )
Example #5
Source File: keypair.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def batch_load_by_ak( cls, context, access_keys, *, domain_name=None, ) -> Sequence[Optional[KeyPair]]: async with context['dbpool'].acquire() as conn: from .user import users j = sa.join(keypairs, users, keypairs.c.user == users.c.uuid) query = ( sa.select([keypairs]) .select_from(j) .where( keypairs.c.access_key.in_(access_keys) ) ) if domain_name is not None: query = query.where(users.c.domain_name == domain_name) return await batch_result( context, conn, query, cls, access_keys, lambda row: row['access_key'], )
Example #6
Source File: kernel.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def batch_load_detail(cls, context, session_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.role == 'master') & (kernels.c.id.in_(session_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, session_ids, lambda row: row['id'], )
Example #7
Source File: kernel.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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'], )
Example #8
Source File: kernel.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def load_count(cls, context, *, domain_name=None, group_id=None, access_key=None, status=None): if isinstance(status, str): status_list = [KernelStatus[s] for s in status.split(',')] elif isinstance(status, KernelStatus): status_list = [status] async with context['dbpool'].acquire() as conn: query = ( sa.select([sa.func.count(kernels.c.id)]) .select_from(kernels) .where(kernels.c.role == 'master') .as_scalar() ) if domain_name is not None: query = query.where(kernels.c.domain_name == domain_name) if group_id is not None: query = query.where(kernels.c.group_id == group_id) if access_key is not None: query = query.where(kernels.c.access_key == access_key) if status is not None: query = query.where(kernels.c.status.in_(status_list)) result = await conn.execute(query) count = await result.fetchone() return count[0]
Example #9
Source File: kernel.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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'], )
Example #10
Source File: user.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def batch_load_by_email( cls, context, emails=None, *, domain_name=None, is_active=None, status=None, ) -> Sequence[Optional[User]]: async with context['dbpool'].acquire() as conn: query = ( sa.select([users]) .select_from(users) .where(users.c.email.in_(emails)) ) if domain_name is not None: query = query.where(users.c.domain_name == domain_name) if status is not None: query = query.where(users.c.status == UserStatus(status)) elif is_active is not None: # consider is_active field only if status is empty _statuses = ACTIVE_USER_STATUSES if is_active else INACTIVE_USER_STATUSES query = query.where(users.c.status.in_(_statuses)) return await batch_result( context, conn, query, cls, emails, lambda row: row['email'], )
Example #11
Source File: user.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def check_credential(dbpool, domain: str, email: str, password: str) \ -> Any: async with dbpool.acquire() as conn: query = (sa.select([users]) .select_from(users) .where((users.c.email == email) & (users.c.domain_name == domain))) result = await conn.execute(query) row = await result.first() if row is None: return None if row['password'] is None: # user password is not set. return None try: if _verify_password(password, row['password']): return row except ValueError: return None return None
Example #12
Source File: resource_policy.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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)]
Example #13
Source File: dispatcher.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def _unreserve_agent_slots( db_conn: SAConnection, sess_ctx: PendingSession, agent_ctx: AgentAllocationContext, ) -> None: # Un-reserve agent slots, using a separate db txn. query = ( sa.select([agents.c.occupied_slots], for_update=True) .select_from(agents) .where(agents.c.id == agent_ctx.agent_id)) current_occupied_slots = await db_conn.scalar(query) query = ( sa.update(agents) .values({ 'occupied_slots': current_occupied_slots - sess_ctx.requested_slots }) .where(agents.c.id == agent_ctx.agent_id)) await db_conn.execute(query)
Example #14
Source File: agent.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def batch_load( cls, context, agent_ids, *, status=None, ) -> Sequence[Optional[Agent]]: async with context['dbpool'].acquire() as conn: query = (sa.select([agents]) .select_from(agents) .where(agents.c.id.in_(agent_ids)) .order_by(agents.c.id)) if status is not None: status = AgentStatus[status] query = query.where(agents.c.status == status) return await batch_result( context, conn, query, cls, agent_ids, lambda row: row['id'], )
Example #15
Source File: agent.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def load_all( cls, context, *, scaling_group=None, status=None, ) -> Sequence[Agent]: async with context['dbpool'].acquire() as conn: query = ( sa.select([agents]) .select_from(agents) ) if scaling_group is not None: query = query.where(agents.c.scaling_group == scaling_group) if status is not None: status = AgentStatus[status] query = query.where(agents.c.status == status) return [ cls.from_row(context, row) async for row in conn.execute(query) ]
Example #16
Source File: agent.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def load_count( context, *, scaling_group=None, status=None, ) -> int: async with context['dbpool'].acquire() as conn: query = ( sa.select([sa.func.count(agents.c.id)]) .select_from(agents) .as_scalar() ) if scaling_group is not None: query = query.where(agents.c.scaling_group == scaling_group) if status is not None: status = AgentStatus[status] query = query.where(agents.c.status == status) result = await conn.execute(query) count = await result.fetchone() return count[0]
Example #17
Source File: vfolder.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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]
Example #18
Source File: vfolder.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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)]
Example #19
Source File: vfolder.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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'] )
Example #20
Source File: resource_policy.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def mutate(cls, root, info, name, props): data = { 'name': name, 'default_for_unspecified': DefaultForUnspecified[props.default_for_unspecified], 'total_resource_slots': ResourceSlot.from_user_input( props.total_resource_slots, None), 'max_concurrent_sessions': props.max_concurrent_sessions, 'max_containers_per_session': props.max_containers_per_session, 'idle_timeout': props.idle_timeout, 'max_vfolder_count': props.max_vfolder_count, 'max_vfolder_size': props.max_vfolder_size, 'allowed_vfolder_hosts': props.allowed_vfolder_hosts, } insert_query = (keypair_resource_policies.insert().values(data)) item_query = ( keypair_resource_policies.select() .where(keypair_resource_policies.c.name == name)) return await simple_db_mutate_returning_item( cls, info.context, insert_query, item_query=item_query, item_cls=KeyPairResourcePolicy)
Example #21
Source File: resource_policy.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
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'], )
Example #22
Source File: kernel.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 6 votes |
def load_count(cls, context, session_id, *, role=None, domain_name=None, group_id=None, access_key=None): async with context['dbpool'].acquire() as conn: query = ( sa.select([sa.func.count(kernels.c.id)]) .select_from(kernels) # TODO: use "owner session ID" when we implement multi-container session .where(kernels.c.id == session_id) .as_scalar() ) if role is not None: query = query.where(kernels.c.role == role) if domain_name is not None: query = query.where(kernels.c.domain_name == domain_name) if group_id is not None: query = query.where(kernels.c.group_id == group_id) if access_key is not None: query = query.where(kernels.c.access_key == access_key) result = await conn.execute(query) count = await result.fetchone() return count[0]
Example #23
Source File: keypair.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def query_owned_dotfiles( conn: SAConnection, access_key: AccessKey, ) -> Tuple[List[Dotfile], int]: query = (sa.select([keypairs.c.dotfiles]) .select_from(keypairs) .where(keypairs.c.access_key == access_key)) packed_dotfile = await conn.scalar(query) rows = msgpack.unpackb(packed_dotfile) return rows, MAXIMUM_DOTFILE_SIZE - len(packed_dotfile)
Example #24
Source File: group.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def mutate(cls, root, info, name, props): async with info.context['dbpool'].acquire() as conn, conn.begin(): assert _rx_slug.search(name) is not None, 'invalid name format. slug format required.' data = { 'name': name, 'description': props.description, 'is_active': props.is_active, 'domain_name': props.domain_name, 'total_resource_slots': ResourceSlot.from_user_input( props.total_resource_slots, None), 'allowed_vfolder_hosts': props.allowed_vfolder_hosts, 'integration_id': props.integration_id, } query = (groups.insert().values(data)) try: result = await conn.execute(query) if result.rowcount > 0: checkq = groups.select().where((groups.c.name == name) & (groups.c.domain_name == props.domain_name)) result = await conn.execute(checkq) o = Group.from_row(info.context, await result.first()) return cls(ok=True, msg='success', group=o) else: return cls(ok=False, msg='failed to create group', group=None) except (pg.IntegrityError, sa.exc.IntegrityError) as e: return cls(ok=False, msg=f'integrity error: {e}', group=None) except (asyncio.CancelledError, asyncio.TimeoutError): raise except Exception as e: return cls(ok=False, msg=f'unexpected error: {e}', group=None)
Example #25
Source File: resource_preset.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def load_all(cls, context): async with context['dbpool'].acquire() as conn: query = (sa.select([resource_presets]) .select_from(resource_presets)) return [cls.from_row(context, r) async for r in conn.execute(query)]
Example #26
Source File: resource_preset.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def batch_load_by_name(cls, context, names): async with context['dbpool'].acquire() as conn: query = (sa.select([resource_presets]) .select_from(resource_presets) .where(resource_presets.c.name.in_(names)) .order_by(resource_presets.c.name)) return await batch_result( context, conn, query, cls, names, lambda row: row['name'], )
Example #27
Source File: dispatcher.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def _reserve_agent( sched_ctx: SchedulingContext, db_conn: SAConnection, scaling_group: str, agent_id: AgentId, requested_slots: ResourceSlot, ) -> AgentAllocationContext: query = ( sa.select([agents.c.occupied_slots], for_update=True) .select_from(agents) .where(agents.c.id == agent_id)) current_occupied_slots = await db_conn.scalar(query) query = (sa.update(agents) .values({ 'occupied_slots': current_occupied_slots + requested_slots }) .where(agents.c.id == agent_id)) await db_conn.execute(query) # Get the agent address for later RPC calls query = (sa.select([agents.c.addr]) .where(agents.c.id == agent_id)) agent_addr = await db_conn.scalar(query) assert agent_addr is not None return AgentAllocationContext(agent_id, agent_addr, scaling_group)
Example #28
Source File: domain.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def load_all(cls, context, *, is_active=None): async with context['dbpool'].acquire() as conn: query = sa.select([domains]).select_from(domains) if is_active is not None: query = query.where(domains.c.is_active == is_active) return [ cls.from_row(context, row) async for row in conn.execute(query) ]
Example #29
Source File: vfolder.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def get_allowed_vfolder_hosts_by_group(conn, resource_policy, domain_name, group_id=None, domain_admin=False): ''' Union `allowed_vfolder_hosts` from domain, group, and keypair_resource_policy. If `group_id` is not None, `allowed_vfolder_hosts` from the group is also merged. If the requester is a domain admin, gather all `allowed_vfolder_hosts` of the domain groups. ''' from . import domains, groups # Domain's allowed_vfolder_hosts. allowed_hosts = set() query = (sa.select([domains.c.allowed_vfolder_hosts]) .where((domains.c.name == domain_name) & domains.c.is_active)) allowed_hosts.update(await conn.scalar(query)) # Group's allowed_vfolder_hosts. if group_id is not None: query = (sa.select([groups.c.allowed_vfolder_hosts]) .where(groups.c.domain_name == domain_name) .where((groups.c.id == group_id) & (groups.c.is_active))) allowed_hosts.update(await conn.scalar(query)) elif domain_admin: query = (sa.select([groups.c.allowed_vfolder_hosts]) .where((groups.c.domain_name == domain_name) & (groups.c.is_active))) async for row in conn.execute(query): allowed_hosts.update(row.allowed_vfolder_hosts) # Keypair Resource Policy's allowed_vfolder_hosts allowed_hosts.update(resource_policy['allowed_vfolder_hosts']) return allowed_hosts
Example #30
Source File: vfolder.py From backend.ai-manager with GNU Lesser General Public License v3.0 | 5 votes |
def get_allowed_vfolder_hosts_by_user(conn, resource_policy, domain_name, user_uuid): ''' Union `allowed_vfolder_hosts` from domain, groups, and keypair_resource_policy. All available `allowed_vfolder_hosts` of groups which requester associated will be merged. ''' from . import association_groups_users, domains, groups # Domain's allowed_vfolder_hosts. allowed_hosts = set() query = (sa.select([domains.c.allowed_vfolder_hosts]) .where((domains.c.name == domain_name) & (domains.c.is_active))) allowed_hosts.update(await conn.scalar(query)) # User's Groups' allowed_vfolder_hosts. j = groups.join(association_groups_users, ((groups.c.id == association_groups_users.c.group_id) & (association_groups_users.c.user_id == user_uuid))) query = (sa.select([groups.c.allowed_vfolder_hosts]) .select_from(j) .where((domains.c.name == domain_name) & (groups.c.is_active))) result = await conn.execute(query) rows = await result.fetchall() for row in rows: allowed_hosts.update(row['allowed_vfolder_hosts']) # Keypair Resource Policy's allowed_vfolder_hosts allowed_hosts.update(resource_policy['allowed_vfolder_hosts']) return allowed_hosts