本文整理汇总了Python中sqlalchemy.sql.not_方法的典型用法代码示例。如果您正苦于以下问题:Python sql.not_方法的具体用法?Python sql.not_怎么用?Python sql.not_使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqlalchemy.sql
的用法示例。
在下文中一共展示了sql.not_方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _expr
# 需要导入模块: from sqlalchemy import sql [as 别名]
# 或者: from sqlalchemy.sql import not_ [as 别名]
def _expr(self,model,model_param,model_expr):
if not isinstance(model_expr,list):
raise UliwebError("only accept array in @expr, but get '%s'"%(model_expr))
num = len(model_expr)
if (num<2 or num>3):
raise UliwebError("only accept 2 or 3 items in @expr, but get '%s'"%(model_expr))
op = model_expr[-2]
if op=='&':
if num!=3:
raise UliwebError("'&'(and) expression need 3 items, but get '%s'"%(model_expr))
c1 = self._get_filter_condition(model,model_param,model_expr[0],expr=True)
c2 = self._get_filter_condition(model,model_param,model_expr[2],expr=True)
return and_(c1,c2)
elif op=='|':
if num!=3:
raise UliwebError("'|'(or) expression need 3 items, but get '%s'"%(model_expr))
c1 = self._get_filter_condition(model,model_param,model_expr[0],expr=True)
c2 = self._get_filter_condition(model,model_param,model_expr[2],expr=True)
return or_(c1,c2)
elif op=='!':
if num!=2:
raise UliwebError("'!'(not) expression need 2 items, but get '%s'"%(model_expr))
return not_(self._get_filter_condition(model,model_param,model_expr[1],expr=True))
else:
raise UliwebError("unknown operator: '%s'"%(op))
示例2: exclude_topic_mutes
# 需要导入模块: from sqlalchemy import sql [as 别名]
# 或者: from sqlalchemy.sql import not_ [as 别名]
def exclude_topic_mutes(conditions: List[Selectable],
user_profile: UserProfile,
stream_id: Optional[int]) -> List[Selectable]:
query = MutedTopic.objects.filter(
user_profile=user_profile,
)
if stream_id is not None:
# If we are narrowed to a stream, we can optimize the query
# by not considering topic mutes outside the stream.
query = query.filter(stream_id=stream_id)
query = query.values(
'recipient_id',
'topic_name',
)
rows = list(query)
if not rows:
return conditions
def mute_cond(row: Dict[str, Any]) -> Selectable:
recipient_id = row['recipient_id']
topic_name = row['topic_name']
stream_cond = column("recipient_id") == recipient_id
topic_cond = topic_match_sa(topic_name)
return and_(stream_cond, topic_cond)
condition = not_(or_(*list(map(mute_cond, rows))))
return conditions + [condition]
示例3: teams_detail
# 需要导入模块: from sqlalchemy import sql [as 别名]
# 或者: from sqlalchemy.sql import not_ [as 别名]
def teams_detail(team_id):
team = Teams.query.filter_by(id=team_id).first_or_404()
# Get members
members = team.members
member_ids = [member.id for member in members]
# Get Solves for all members
solves = team.get_solves(admin=True)
fails = team.get_fails(admin=True)
awards = team.get_awards(admin=True)
score = team.get_score(admin=True)
place = team.get_place(admin=True)
# Get missing Challenges for all members
# TODO: How do you mark a missing challenge for a team?
solve_ids = [s.challenge_id for s in solves]
missing = Challenges.query.filter(not_(Challenges.id.in_(solve_ids))).all()
# Get addresses for all members
addrs = (
Tracking.query.filter(Tracking.user_id.in_(member_ids))
.order_by(Tracking.date.desc())
.all()
)
return render_template(
"admin/teams/team.html",
team=team,
members=members,
score=score,
place=place,
solves=solves,
fails=fails,
missing=missing,
awards=awards,
addrs=addrs,
)
示例4: list_expired_dids
# 需要导入模块: from sqlalchemy import sql [as 别名]
# 或者: from sqlalchemy.sql import not_ [as 别名]
def list_expired_dids(worker_number=None, total_workers=None, limit=None, session=None):
"""
List expired data identifiers.
:param limit: limit number.
:param session: The database session in use.
"""
stmt = exists().where(and_(models.ReplicationRule.scope == models.DataIdentifier.scope,
models.ReplicationRule.name == models.DataIdentifier.name,
models.ReplicationRule.locked == true()))
query = session.query(models.DataIdentifier.scope, models.DataIdentifier.name,
models.DataIdentifier.did_type,
models.DataIdentifier.created_at,
models.DataIdentifier.purge_replicas).\
filter(models.DataIdentifier.expired_at < datetime.utcnow(), not_(stmt)).\
order_by(models.DataIdentifier.expired_at).\
with_hint(models.DataIdentifier, "index(DIDS DIDS_EXPIRED_AT_IDX)", 'oracle')
if session.bind.dialect.name in ['oracle', 'mysql', 'postgresql']:
query = filter_thread_work(session=session, query=query, total_threads=total_workers, thread_id=worker_number, hash_variable='name')
elif session.bind.dialect.name == 'sqlite' and worker_number and total_workers and total_workers > 0:
row_count = 0
dids = list()
for scope, name, did_type, created_at, purge_replicas in query.yield_per(10):
if int(md5(name).hexdigest(), 16) % total_workers == worker_number:
dids.append({'scope': scope,
'name': name,
'did_type': did_type,
'created_at': created_at,
'purge_replicas': purge_replicas})
row_count += 1
if limit and row_count >= limit:
return dids
return dids
else:
if worker_number and total_workers:
raise exception.DatabaseException('The database type %s returned by SQLAlchemy is invalid.' % session.bind.dialect.name)
if limit:
query = query.limit(limit)
return [{'scope': scope, 'name': name, 'did_type': did_type, 'created_at': created_at,
'purge_replicas': purge_replicas} for scope, name, did_type, created_at, purge_replicas in query]
示例5: scope_list
# 需要导入模块: from sqlalchemy import sql [as 别名]
# 或者: from sqlalchemy.sql import not_ [as 别名]
def scope_list(scope, name=None, recursive=False, session=None):
"""
List data identifiers in a scope.
:param scope: The scope name.
:param session: The database session in use.
:param name: The data identifier name.
:param recursive: boolean, True or False.
"""
# TODO= Perf. tuning of the method
# query = session.query(models.DataIdentifier).filter_by(scope=scope, deleted=False)
# for did in query.yield_per(5):
# yield {'scope': did.scope, 'name': did.name, 'type': did.did_type, 'parent': None, 'level': 0}
def __topdids(scope):
c = session.query(models.DataIdentifierAssociation.child_name).filter_by(scope=scope, child_scope=scope)
q = session.query(models.DataIdentifier.name, models.DataIdentifier.did_type).filter_by(scope=scope) # add type
s = q.filter(not_(models.DataIdentifier.name.in_(c))).order_by(models.DataIdentifier.name)
for row in s.yield_per(5):
yield {'scope': scope, 'name': row.name, 'type': row.did_type, 'parent': None, 'level': 0}
def __diddriller(pdid):
query_associ = session.query(models.DataIdentifierAssociation).filter_by(scope=pdid['scope'], name=pdid['name'])
for row in query_associ.order_by('child_name').yield_per(5):
parent = {'scope': pdid['scope'], 'name': pdid['name']}
cdid = {'scope': row.child_scope, 'name': row.child_name, 'type': row.child_type, 'parent': parent, 'level': pdid['level'] + 1}
yield cdid
if cdid['type'] != DIDType.FILE and recursive:
for did in __diddriller(cdid):
yield did
if name is None:
topdids = __topdids(scope)
else:
topdids = session.query(models.DataIdentifier).filter_by(scope=scope, name=name).first()
if topdids is None:
raise exception.DataIdentifierNotFound("Data identifier '%(scope)s:%(name)s' not found" % locals())
topdids = [{'scope': topdids.scope, 'name': topdids.name, 'type': topdids.did_type, 'parent': None, 'level': 0}]
if name is None:
for topdid in topdids:
yield topdid
if recursive:
for did in __diddriller(topdid):
yield did
else:
for topdid in topdids:
for did in __diddriller(topdid):
yield did
示例6: users_detail
# 需要导入模块: from sqlalchemy import sql [as 别名]
# 或者: from sqlalchemy.sql import not_ [as 别名]
def users_detail(user_id):
# Get user object
user = Users.query.filter_by(id=user_id).first_or_404()
# Get the user's solves
solves = user.get_solves(admin=True)
# Get challenges that the user is missing
if get_config("user_mode") == TEAMS_MODE:
if user.team:
all_solves = user.team.get_solves(admin=True)
else:
all_solves = user.get_solves(admin=True)
else:
all_solves = user.get_solves(admin=True)
solve_ids = [s.challenge_id for s in all_solves]
missing = Challenges.query.filter(not_(Challenges.id.in_(solve_ids))).all()
# Get IP addresses that the User has used
addrs = (
Tracking.query.filter_by(user_id=user_id).order_by(Tracking.date.desc()).all()
)
# Get Fails
fails = user.get_fails(admin=True)
# Get Awards
awards = user.get_awards(admin=True)
# Get user properties
score = user.get_score(admin=True)
place = user.get_place(admin=True)
return render_template(
"admin/users/user.html",
solves=solves,
user=user,
addrs=addrs,
score=score,
missing=missing,
place=place,
fails=fails,
awards=awards,
)