本文整理汇总了Python中sqlalchemy.select方法的典型用法代码示例。如果您正苦于以下问题:Python sqlalchemy.select方法的具体用法?Python sqlalchemy.select怎么用?Python sqlalchemy.select使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqlalchemy
的用法示例。
在下文中一共展示了sqlalchemy.select方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: batch_load_by_email
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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'],
)
示例2: check_credential
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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
示例3: load_all_user
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [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)]
示例4: batch_load_by_name_user
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [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'],
)
示例5: mutate
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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)
示例6: load_count
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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]
示例7: load_all
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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)
]
示例8: batch_load
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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'],
)
示例9: mutate
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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)
示例10: load_count
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [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]
示例11: load_slice
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [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)]
示例12: batch_load_by_user
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [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']
)
示例13: upgrade
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
def upgrade():
op.add_column('keypairs', sa.Column('ssh_public_key', sa.String(length=750), nullable=True))
op.add_column('keypairs', sa.Column('ssh_private_key', sa.String(length=2000), nullable=True))
# partial table to be preserved and referred
metadata = sa.MetaData(naming_convention=convention)
keypairs = sa.Table(
'keypairs', metadata,
sa.Column('access_key', sa.String(length=20), primary_key=True),
sa.Column('ssh_public_key', sa.String(length=750), nullable=True),
sa.Column('ssh_private_key', sa.String(length=2000), nullable=True),
)
# Fill in SSH keypairs in every keypairs.
conn = op.get_bind()
query = sa.select([keypairs.c.access_key]).select_from(keypairs)
rows = conn.execute(query).fetchall()
for row in rows:
pubkey, privkey = generate_ssh_keypair()
query = (sa.update(keypairs)
.values(ssh_public_key=pubkey, ssh_private_key=privkey)
.where(keypairs.c.access_key == row.access_key))
conn.execute(query)
示例14: load_count
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [as 别名]
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]
示例15: batch_load_detail
# 需要导入模块: import sqlalchemy [as 别名]
# 或者: from sqlalchemy import select [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'],
)