Skip to main content

SurrealDB Query Interface

Project description

Sirqle

Logo

Surreal DB with Python wrapper for surrealdb.py which makes it easy to write SurrealQL queries in Python.

Install with:

pip install sirqle

Usage:

from sirqle.query import Config, Query

config = Config(
        url = "localhost:8000",
        namespace = "test",
        database = "test",
        username = "test",
        password = "test",
)
my_query = Query(config=config)

table_name = "person"
cont = {
    "name": "Tobie",
    "company": "SurrealDB",
    "skills": ["Rust", "Go", "JavaScript"],
}
my_query.create(table_name).content(cont)
response = await my_query.execute()

# the result

response = [{'company': 'SurrealDB', 'id': 'person:it2e579rij23zu0iswk4', 'name': 'Tobie', 'skills': ['Rust', 'Go', 'JavaScript']}]

Config Module

The Config class is used to configure the connection the database. It uses the SurrealHTTP client and requires the following arguments depending on the desired method:

  1. Manually enter the parameters
  • url : URL of the database
  • namespace : The namespace of the database
  • database : The name of the database
  • username : The access username
  • password : The access password
  1. Pass a previous defined client
  • client : an SurrealHTTP client from surrealdb.py
  1. Load the parameters from a file
  • env_file: the name of the env file. Defaults to .db_conf.

Query Module

The Query module aims to extend the standard SurrealQL and make it more Python friendly. Internally it constructs a SurrealQL string from method chaining and sends the query to the database.

Initialize the query

query = Query(config)

Create examples

Create a new entry:

CREATE person CONTENT {
name: 'Tobie',
company: 'SurrealDB',
skills: ['Rust', 'Go', 'JavaScript']
};

becomes

table_name = "person"
cont = {
    "name": "Tobie",
    "company": "SurrealDB",
    "skills": ["Rust", "Go", "JavaScript"],
}
create_query.create(table_name).content(cont)

Insert example

INSERT INTO person (name, company, founded) VALUES ('John', 'SurrealDB', '2021-09-10');

becomes

table_name = "person (name, company, founded)"
data = tuple(["John", "SurrealDB", "2021-09-10"])
insert_query.insert(table_name, values=data)

Select example

SELECT * FROM person;

becomes

query.select("*").from_("person")

Execution

To execute the query run res = await query.execute(), where res is the result of the query.

Custom query example

If you need something more complex than the basic operations, you can directly pass an SurrealQL query as a string:

This query creates a temporary entry in the table Topic where we hash the values of topic_label and topic_source, returns the hash value and then delete the table.

table_name = "Topic"
topic_label = "SurrealDB is awesome"
topic_source = "My personal knowledge"
my_query.custom( f"create {table_name} content"
                + f" {{words: {topic_label}, source: {topic_source}}}"
                + f" return crypto::md5(string::concat($this.words, $this.source));"
                + f" delete from {table_name};")
response = await my_query.execute()
response = {"crypto::md5": "8f23a9630e18d525946740e5498798be"}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sirqle-0.4.4.tar.gz (521.8 kB view details)

Uploaded Source

Built Distribution

sirqle-0.4.4-py3-none-any.whl (13.9 kB view details)

Uploaded Python 3

File details

Details for the file sirqle-0.4.4.tar.gz.

File metadata

  • Download URL: sirqle-0.4.4.tar.gz
  • Upload date:
  • Size: 521.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for sirqle-0.4.4.tar.gz
Algorithm Hash digest
SHA256 1ec5406a3d734a3f00918886ebbffc5779865714c6be94b810b593e05c37e37a
MD5 cf9c1027c07aa959b64dc53ef2cd2f35
BLAKE2b-256 5fbfe5f37e14135eb7d7fe1318340223f68afd763106c01feb3ca60322da4884

See more details on using hashes here.

File details

Details for the file sirqle-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: sirqle-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 13.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for sirqle-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 90716c2891e5e4a1dbaeef97740bcb3b749c2984392bd95c304b875cd2746b4e
MD5 ae815931c966502e5f44fc9877a5ac71
BLAKE2b-256 4361cf9dbdac877de71712bc418f0fc8efb2dadf691f72c26f38eb8d6faac0e0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page