ContextSelect#
#class ContextSelect
ContextSelect
objects are returned by the Context.__enter__()
method.
They are primarily used to select results in query contexts.
ContextSelect
objects are also used in Model.match()
contexts.
Methods#
Name | Description | Returns |
---|---|---|
.__call__(*args, **kwargs) | Calls the ContextSelect object to select results in a query context. Must be called in a query context. | Context |
.__getattribute__(name) | Gets properties objects added to the ContextSelect object. Only used in .match() contexts. | Producer |
.add(item, **kwargs) | Adds items to the ContextSelect object. Only used in .match() contexts. | None |
Example#
The Context.__enter__()
method returns a ContextSelect
object when called
in a with
statement.
An example is the select
object used in query contexts:
#import relationalai as rai
model = rai.Model("books")
Book = model.Type("Book")
# Add a book to the model.
with model.rule():
Book.add(title="Foundation", author="Isaac Asimov")
Book.add(title="Humble Pi", author="Matt Parker")
# Get all books in the model.
# `select` is a `ContextSelect` object returned by `model.query().__enter__()`.
with model.query() as select:
book = Book()
response = select(book.name, book.author)
print(response.results)
# Output:
# title author
# 0 Foundation Isaac Asimov
# 1 Humble Pi Matt Parker
ContextSelect
objects are callable.
The preceding example calls the select
object to select results in the query.
You may only call ContextSelect
objects in a query context.
Model.match()
may also use a ContextSelect
object.
In these contexts, the ContextSelect
object groups matched objects:
#with model.query() as select:
book = Book()
# `matched` is a `ContextSelect` object created by the
# `model.match().__enter__()` method. The `matched.add()`
# method is used to "select" objects based on conditions and
# add them to the `matched` collection.
with model.match(multiple=True) as matched:
with book.author == "Isaac Asimov":
matched.add(book)
with book.title == "Humble Pi":
matched.add(book)
response = select(matched.title, matched.author)
print(response.results)
# Output:
# title author
# 0 Foundation Isaac Asimov
# 1 Humble Pi Matt Parker
Properties of objects added to a ContextSelect
object via ContextSelect.add()
may be accessed directly thanks to ContextSelect.__getattribute__()
.
For instance, in the preceding example, the .title
and .author
properties of
Book
objects in matched
are accessed as matched.title
and matched.author
.