EdgeQL Query Builder
Query builder for EdgeDB
Description
- Project currently in pre-alpha status. It is not production-ready yet, and It may be buggy and unstable as well.
- The project is not affiliated with the official developers of EdgeDB.
- This project only supports a small part of the EdgeDB syntax.
- The library does not contain any code to connect to the database or to execute queries.
- The library does not introspect the database and will not check if you made a typo somewhere in a column name. What you write is what you get.
- Minimal required version of python is 3.10. Not sure if I'll ever do a backport.
- There is no external dependencies, even on EdgeDB itself.
Usage examples
Many examples of queries are given in the documentation directory.
from edgeql_qb import EdgeDBModel
from edgeql_qb.types import int16
from edgedb.blocking_client import create_client
client = create_client()
Movie = EdgeDBModel('Movie')
Person = EdgeDBModel('Person')
insert = Movie.insert.values(
title='Blade Runner 2049',
year=int16(2017),
director=(
Person.select()
.where(Person.c.id == director_id)
.limit1
),
actors=Person.insert.values(
first_name='Harrison',
last_name='Ford',
),
).build()
select = (
Movie.select(
Movie.c.title,
Movie.c.year,
Movie.c.director(
Movie.c.director.first_name,
Movie.c.director.last_name,
),
Movie.c.actors(
Movie.c.actors.first_name,
Movie.c.actors.last_name,
),
)
.where(Movie.c.title == 'Blade Runner 2049')
.build()
)
delete = Movie.delete.where(Movie.c.title == 'Blade Runner 2049').build()
decade = (Movie.c.year // 10).label('decade')
group = Movie.group().using(decade).by(decade).build()
client.query(insert.query, **insert.context)
result = client.query(select.query, **select.context)
movies_by_decade = client.query(group.query, **group.context)
client.query(delete.query, **delete.context)
Status
-
Queries:
-
Types:
-
Functions