gel-python is the official Gel driver for Python. It provides both blocking IO and asyncio implementations.
The library requires Python 3.9 or later.
The project documentation can be found here.
The library is available on PyPI. Use pip to install it:
$ pip install gel
importdatetimeimportgeldefmain():
client=gel.create_client()
# Create a User object typeclient.execute(''' CREATE TYPE User { CREATE REQUIRED PROPERTY name -> str; CREATE PROPERTY dob -> cal::local_date; } ''')
# Insert a new User objectclient.query(''' INSERT User { name := <str>$name, dob := <cal::local_date>$dob } ''', name='Bob', dob=datetime.date(1984, 3, 1))
# Select User objects.user_set=client.query(
'SELECT User {name, dob} FILTER .name = <str>$name', name='Bob')
# *user_set* now contains# Set{Object{name := 'Bob', dob := datetime.date(1984, 3, 1)}}# Close the client.client.close()
if__name__=='__main__':
main()We provide a models generator that lets you build queries programmatically, and generate Pydantic models directly from your schema.
To use, run the following command:
$ gel generate py/modelsThis will find your Python project and add a models package to it. Then you can use the generated models to build queries and mutate instances of your objects directly.
importdatetimefrommodelsimportUser, stdfromgelimportcreate_clientdefmain():
client=create_client()
# Create a new User instance and save it to the databasebob=User(name='Bob', dob=datetime.date(1984, 3, 1))
client.save(bob)
# Select all Usersusers=client.query(User)
# Select all users with names like "Bob"bob_like=client.query(User.filter(lambdau: std.ilike(u.name, '%bob%')))
# Update an objectbob.name='Robert'client.save(bob)
# Delete an objectclient.execute(User.filter(id=bob.id).delete())
client.close()
if__name__=='__main__':
main()Instructions for installing Gel and gel-python locally can be found at docs.geldata.com/resources/guides/contributing/code.
To run the test suite, run $ python setup.py test.
gel-python is developed and distributed under the Apache 2.0 license.