Python version of the TerminusDB client - for TerminusDB API and WOQLpy

Overview

TerminusDB Client Python

Discord online Discourse topics Follow on Twitter

Development status โš™๏ธ

Build Status Documentation Status codecov last commit number of contributors

Python Package status ๐Ÿ“ฆ

PyPI version shields.io PyPI pyversions GitHub license PyPI download month

Python version of the TerminusDB client - for TerminusDB API and WOQLpy

Client Demo gif

Requirements

Release Notes and Previous Versions

TerminusDB Client v10.0 works with TerminusDB v10.0 and TerminusX. Please check RELEASE_NOTES.md to find out what has changed.

Installation

  • TerminusDB Client can be downloaded form PyPI using pip: python -m pip install terminusdb-client

This only includes the core Python Client (WOQLClient) and WOQLQuery.

If you want to use woqlDataframe or the import and export csv function in Scaffolding CLI tool:

python -m pip install terminusdb-client[dataframe]

if you are installing form zsh you have to quote the argument like this:

python -m pip install 'terminusdb-client[dataframe]'

  • Install from source:

python -m pip install git+https://github.com/terminusdb/terminusdb-client-python.git

Usage

Python client

Connect to a server

Connect to local host

from terminusdb_client import WOQLClient

client = WOQLClient("http://127.0.0.1:6363/")
client.connect()

Connect to TerminusX

check documentation for TerminusX about how to add the API token to the environment variable

from terminusdb_client import WOQLClient

team="MyTeam"
client = WOQLClient(f"https://dashboard.terminusdb.com/{team}/")
client.connect(team="MyTeam", use_token=True)

Create a database

client.create_database("MyDatabase")

Create a schema

from terminusdb_client.woqlschema import WOQLSchema, DocumentTemplate, RandomKey

my_schema = WOQLSchema()

class Pet(DocumentTemplate):
    _schema = my_schema
    name: str
    species: str
    age: int
    weight: float

my_schema.commit(client)

Create and insert doucments

my_dog = Pet(name="Honda", species="Huskey", age=3, weight=21.1)
my_cat = Pet(name="Tiger", species="Bengal cat", age=5, weight=4.5)
client.insert_document([my_dog, my_cat])

Get back all documents

print(list(client.get_all_documents()))
[{'@id': 'Pet/b5edacf854e34fe79c228a91e2af45fb', '@type': 'Pet', 'age': 5, 'name': 'Tiger', 'species': 'Bengal cat', 'weight': 4.5}, {'@id': 'Pet/cdbe3f6d49394b38b952ae315309256d', '@type': 'Pet', 'age': 3, 'name': 'Honda', 'species': 'Huskey', 'weight': 21.1}]

Get a specific document

print(list(client.query_document({"@type":"Pet", "age":5})))
[{'@id': 'Pet/145eb73966d14a1394f7cd5576d7d0b8', '@type': 'Pet', 'age': 5, 'name': 'Tiger', 'species': 'Bengal cat', 'weight': 4.5}]

Delete a database

client.delete_database("MyDatabase")

Scaffolding CLI tool

Scaffolding Demo gif

Start a project in the directory

$terminusdb startproject
Please enter a project name (this will also be the database name): mydb
Please enter a endpoint location (press enter to use localhost default) [http://127.0.0.1:6363/]:
config.json and schema.py created, please customize them to start your project.

Import a CSV named grades.csv

$terminusdb importcsv grades.csv --na=error
0it [00:00, ?it/s]
Schema object Grades created with grades.csv inserted into database.
schema.py is updated with mydb schema.
1it [00:00,  1.00it/s]
Records in grades.csv inserted as type Grades into database with Lexical ids.

Get documents with query

terminusdb alldocs --type Grades -q grade="B-"
[{'@id': 'Grades/Android_Electric_087-65-4321_42.0_23.0_36.0_45.0_47.0_B-', '@type': 'Grades', 'final': 47.0, 'first_name': 'Electric', 'grade': 'B-', 'last_name': 'Android', 'ssn': '087-65-4321', 'test1': 42.0, 'test2': 23.0, 'test3': 36.0, 'test4': 45.0}, {'@id': 'Grades/Elephant_Ima_456-71-9012_45.0_1.0_78.0_88.0_77.0_B-', '@type': 'Grades', 'final': 77.0, 'first_name': 'Ima', 'grade': 'B-', 'last_name': 'Elephant', 'ssn': '456-71-9012', 'test1': 45.0, 'test2': 1.0, 'test3': 78.0, 'test4': 88.0}, {'@id': 'Grades/Franklin_Benny_234-56-2890_50.0_1.0_90.0_80.0_90.0_B-', '@type': 'Grades', 'final': 90.0, 'first_name': 'Benny', 'grade': 'B-', 'last_name': 'Franklin', 'ssn': '234-56-2890', 'test1': 50.0, 'test2': 1.0, 'test3': 90.0, 'test4': 80.0}]

Delete the database

$terminusdb deletedb
Do you want to delete 'mydb'? WARNING: This opertation is non-reversible. [y/N]: y
mydb deleted.

Please check the full Documentation for more information.

Tutorials

There is a list of examples that uses the Python client in our tutorial repo. As a start, we would recommend having a look at create TerminusDB graph with Python client using Jupyter notebook

Testing

  1. Clone this repository git clone https://github.com/terminusdb/terminusdb-client-python.git

  2. Install all development dependencies using pipenv

$ make init
  1. (a) To run test files only
$ pytest terminusdb_client/tests
  1. (b) To run full test
$ tox -e test

Documentation

Visit our TerminusDB Documentation for the full explanation of using TerminusDB.

Documentation specifically on the latest version of the Python Client can be found here.

Generating Documentation Locally using Sphinx

  1. Clone this repository git clone https://github.com/terminusdb/terminusdb-client-python.git

  2. Install all development dependencies

$ make init
  1. Change directory to docs
$ cd docs/
  1. Build with Sphinx
$ make html

The output files are under docs/build/html, open index.html in your browser to inspect.

Report Issues

If you encounter any issues, please report them with your os and environment setup, the version that you are using and a simple reproducible case.

If you have other questions, you can ask in our community forum or Discord server.

Community

Come visit us on our discord server or our forum. We are also on twitter

Contribute

It will be nice, if you open an issue first so that we can know what is going on, then, fork this repo and push in your ideas. Do not forget to add some test(s) of what value you adding.

Please check CONTRIBUTING.md for more information.

Licence

Apache License (Version 2.0)

Copyright (c) 2019

Comments
  • Writing test for woql_view.py

    Writing test for woql_view.py

    We need to add tests for woql_view.py, a file named test_woqlView.py can be added to terminusdb_client/tests/

    In the test, it would check the WOQLView methods against the js_config, for example, test for WOQLView().height(100) should give you woqlGraphConfig.height(100) when you call the print_js_config.

    The issue would need more guidance so please don't feel shy to ask for clarification here.

    PR should be made to master branch

    help wanted 
    opened by Cheukting 13
  • Add type annotations?

    Add type annotations?

    Is your feature request related to a problem? Please describe. I have been looking at the code to try and understand how some functions work, and as often with python it is difficult to guess what sort of data is expected in a variable or function call.

    Describe the solution you'd like Python type hints are a great way to provide such info. I see them as automated documentation, which also serves as a debugging help. Given how strong the data typing is inside the database, I think it would also make sense to extend it over to the client code.

    Describe alternatives you've considered I am not aware of any alternatives to type hints, but I think they can be implemented in a couple of different ways:

    • directly into the code, probably the goal in the end, given how they help with understanding the code
    • as *.pyi stub files that live side by side with the actual code, or even in a different repo. I think they have value in code bases that also aim at working under older python version (2.7 and so on), but given that you're aiming for python 3.6+, I don't think this applies. They're also useful if you don't want to include hints in the main code base, as the stubs can live their own life elsewhere (and constantly try to stay up to date with the code).

    Additional context When I've added type hint to existing code bases before, I've almost always found a couple of bugs that mypy made immediately obvious. Some argue that type hints make the code harder to read, but I think it's a minor disagreement considering the value they bring. I could be up for sending a PR with annotations for the core functions, if you think that would be useful.

    enhancement help wanted multi-contributors 
    opened by laurentS 10
  • [Discussion] Maybe rollback should go back to the last connect/ commit method as default?

    [Discussion] Maybe rollback should go back to the last connect/ commit method as default?

    Now the WOQLClient.rollback allows a user to put in how many step to go back and 1 step is the default. Maybe the default should be going back to when the connection starts or when the user calls WOQLCLient.commit?

    enhancement area: python client in progress 
    opened by Cheukting 9
  • gensym() needed

    gensym() needed

    Quite often there is a need to generate several unique yet anonymous instances of a class, that is, the client doesn't care about their names but you want to make sure they are all separate). Neither id_gen() nor unique() provide this function directly and require you to programmatically maintain some kind of global counter to pass as part of the key_list to ensure there is no collision with past ids. And the client then needs to keep a record of the counter in the DB so inserts and queries during subsequent sessions continue to be unique. The db server should provide this function. In LISP, this function was called gensym (for generate a symbol); if no prefix was given it used 'G' and returned 'G00345', etc.

    enhancement area: python client in progress 
    opened by jbennettgit 9
  • Update for WOQL schema changes

    Update for WOQL schema changes

    Various document query elements changed recently. They need to be updated in the client.

    • See also https://github.com/terminusdb/terminusdb-client-js/issues/78 for the JavaScript issue.
    • See https://github.com/terminusdb/terminusdb/commit/1c75eef9365fdb50abee013d502f89ab21082867 for a large change to json_woql.pl that describes some, if not all, changes.
    • See the current WOQL schema.
    bug area: python client triage 
    opened by spl 8
  • xsd:string is sensitive to prefixes on cast and shouldn't be

    xsd:string is sensitive to prefixes on cast and shouldn't be

    Ubuntu 18.04 running bootstrap version 4.1.2 in docker container, via python client:

    WOQLQuery().cast('http:foo','xsd:string','v:Value').execute(client) yields: *** terminusdb_client.woqlclient.errors.APIError: { "api:message":"Error: key_has_unknown_prefix("http:foo")\n [47] ...."}

    WOQLQuery().cast('scm:foo','xsd:string','v:Value').execute(client) yields: *** terminusdb_client.woqlclient.errors.APIError: { "@type":"api:FrameErrorResponse", "api:error": { "@type":"api:BadCast", "api:type":"http://www.w3.org/2001/XMLSchema#string", "api:value":"'terminusdb:///schema#foo'" }, "api:message":"The value 'terminusdb:///schema#foo' could not be cast as 'http://www.w3.org/2001/XMLSchema#string'", "api:status":"api:failure" }

    xsd:string should just take the string as-is (except perhaps deal with embedded '<' and '&') and ignore apparent prefixes.

    enhancement area: python client in progress 
    opened by jbennettgit 8
  • Error thrown while performing the command -

    Error thrown while performing the command - "tox -e check"

    Describe the bug I am setting up the terminusdb-client-python repo and following this guide here. However when I reach the step for tox -e check, it throws an error. I have performed all the steps as mentioned in that guide.

    To Reproduce Clone a fresh repo and perform the steps mentioned in the guide here. When you reach the line tox -e check it throws an error. An additional step I took which is not mentioned in the guide, is to activate the virtualenv by running pipenv shell. Apart from this, all the steps are same.

    Expected behavior The check should be performed and should give the result.

    Error logs The error is thrown as

    terminusdb-client-python on ๎‚  master via ๐Ÿ v3.8.2 (terminusdb-client-python-kX6_7a_V) took 1m48s 
    โฏ tox -e check
    check installed: appdirs==1.4.4,attrs==20.2.0,autoflake==1.4,bandit==1.6.2,black==20.8b1,click==7.1.2,dataclasses==0.6,flake8==3.8.3,flake8-assertive==1.2.1,flake8-bandit==2.1.2,flake8-bugbear==20.1.4,flake8-builtins==1.5.3,flake8-comprehensions==3.2.3,flake8-polyfill==1.0.2,flake8-print==3.1.4,gitdb==4.0.5,GitPython==3.1.8,importlib-metadata==2.0.0,isort==5.5.4,libcst==0.3.11,mccabe==0.6.1,mypy-extensions==0.4.3,pathspec==0.8.0,pbr==5.5.0,pep8-naming==0.11.1,pybetter==0.3.5,pycodestyle==2.6.0,pyemojify==0.2.0,pyflakes==2.2.0,Pygments==2.7.1,pyupgrade==2.7.2,PyYAML==5.3.1,regex==2020.9.27,shed==0.2.4,six==1.15.0,smmap==3.0.4,stevedore==3.2.2,tokenize-rt==4.0.0,toml==0.10.1,typed-ast==1.4.1,typing-extensions==3.7.4.3,typing-inspect==0.6.0,zipp==3.2.0
    check run-test-pre: PYTHONHASHSEED='459764776'
    check run-test: commands[0] | shed
    Traceback (most recent call last):
      File "/home/prashant/Documents/personal/OSS/terminusdb-client-python/.tox/check/bin/shed", line 5, in <module>
        from shed import cli
      File "/home/prashant/Documents/personal/OSS/terminusdb-client-python/.tox/check/lib/python3.8/site-packages/shed/__init__.py", line 46, in <module>
        from com2ann import com2ann
    ModuleNotFoundError: No module named 'com2ann'
    ERROR: InvocationError for command /home/prashant/Documents/personal/OSS/terminusdb-client-python/.tox/check/bin/shed (exited with code 1)
    _____________________________________________________________________________________________________ summary _____________________________________________________________________________________________________
    ERROR:   check: commands failed
    
    

    System information (please complete the following information):

    • OS: Ubuntu 20.04
    • terminus-client-python version: The editable version installed from pip install -e .

    Additional context None

    bug 
    opened by gutsytechster 8
  • Path query with least/most fails with type error

    Path query with least/most fails with type error

    Describe the bug Performing a path query with least/most fails. Using the same query with the + quantifiers works with the same query in other respects.

    To Reproduce Steps to reproduce the behavior:

    1. Go to TerminusX
    2. Have model where a path query can be performed with edge property names known
    3. Click on Data Product Explorer
    4. Enter queries
    5. Open Browser console --> Network information --> clear cache
    6. Press Run
    7. See error as the response (HTTP 400)

    Non-working query (note the {1,2}):

    WOQL.and(
      WOQL.triple("v:person","rdf:type","@schema:Capability"),
      WOQL.triple("v:circle","rdf:type","@schema:Gap"),
      WOQL.path("v:person","((capability_userstory|userstory_gap){1,2})","v:circle","v:path_var5")
      )
    

    Working query (note the +):

    WOQL.and(
      WOQL.triple("v:person","rdf:type","@schema:Capability"),
      WOQL.triple("v:circle","rdf:type","@schema:Gap"),
      WOQL.path("v:person","((capability_userstory|userstory_gap)+)","v:circle","v:path_var5")
      )
    

    Expected behavior I expected to get the same result between both queries

    Screenshots See error message below (the error message is not reported in TerminusX, and just fails silently, showing the result of the previous query instead of failing).

    {
      "api:message":"Type error for '1'/0 which should be evaluable",
      "api:status":"api:failure",
      "system:witnesses": [
        {
          "@type":"vio:ViolationWithDatatypeObject",
          "vio:literal":"'1'/0",
          "vio:message":"Type error for '1'/0 which should be evaluable",
          "vio:type":"evaluable"
        }
      ]
    }
    

    Info (please complete the following information):

    • OS: Microsoft Edge (chromium)
    • TerminusX

    Additional context Add any other context about the problem here.

    bug area: python client triage 
    opened by hoijnet 7
  • [Bug] Fix context under db creation (Close #207)

    [Bug] Fix context under db creation (Close #207)

    Addressing #207

    Modified mocked_requests_get() to return function to be able to override response code like @mock.patch("requests.post", side_effect=mocked_request(response_code=400))

    opened by Marufenko 7
  • Bug when running the Readme `Usage`

    Bug when running the Readme `Usage`

    When running the usage in the readme am having issues with context

    To Reproduce 1- Install the python client 2- Connect to the terminusdb 3- Create a database 4- Error occurs when creating the db schema

    Expected behavior Expecting to have a newly created schema

    Error logs .Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/nkeumo/Documents/pycharmWorkspace/terminusdb-client-python/terminusdb_client/woqlquery/woql_query.py", line 481, in execute return client.query(self, commit_msg, file_dict=file_dict) File "/Users/nkeumo/Documents/pycharmWorkspace/terminusdb-client-python/terminusdb_client/woqlclient/woqlClient.py", line 1101, in query request_woql_query["@context"] = self._context AttributeError: 'WOQLClient' object has no attribute '_context'

    This occurs when I run this command WOQLQuery().doctype("scm:student").property("scm:name", "xsd:string").execute(client, "student schema created.")

    System information (please complete the following information):

    • OS: [e.g. Mac OS Bigsur]
    • terminus-client-python dev version
    bug area: python client in progress 
    opened by Nkarnaud 7
  • [Feature] (#121) Typing for woqlClient.py

    [Feature] (#121) Typing for woqlClient.py

    This PR adds typing annotations to woqlClient.py.

    Running mypy on the code brings up a few issues for which I'd like to have your opinion @Cheukting to make sure the code stays consistent across the various files.

    I'm adding a few comments directly in the code to help understand the context to which I'm referring. Please let me know what you think of them, and I'll update the PR accordingly. I usually like stronger typing, because I find that it helps catch mistakes as you write the code, instead of waiting for execution to find them :)

    hacktoberfest-accepted 
    opened by laurentS 7
  • Bump certifi from 2022.6.15 to 2022.12.7

    Bump certifi from 2022.6.15 to 2022.12.7

    Bumps certifi from 2022.6.15 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump cryptography from 37.0.4 to 38.0.3

    Bump cryptography from 37.0.4 to 38.0.3

    Bumps cryptography from 37.0.4 to 38.0.3.

    Changelog

    Sourced from cryptography's changelog.

    38.0.3 - 2022-11-01

    
    * Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.7,
      which resolves *CVE-2022-3602* and *CVE-2022-3786*.
    

    .. _v38-0-2:

    38.0.2 - 2022-10-11 (YANKED)

    .. attention::

    This release was subsequently yanked from PyPI due to a regression in OpenSSL.
    
    • Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.0.6.

    .. _v38-0-1:

    38.0.1 - 2022-09-07

    
    * Fixed parsing TLVs in ASN.1 with length greater than 65535 bytes (typically
      seen in large CRLs).
    

    .. _v38-0-0:

    38.0.0 - 2022-09-06

    • Final deprecation of OpenSSL 1.1.0. The next release of cryptography will drop support.
    • We no longer ship manylinux2010 wheels. Users should upgrade to the latest pip to ensure this doesn't cause issues downloading wheels on their platform. We now ship manylinux_2_28 wheels for users on new enough platforms.
    • Updated the minimum supported Rust version (MSRV) to 1.48.0, from 1.41.0. Users with the latest pip will typically get a wheel and not need Rust installed, but check :doc:/installation for documentation on installing a newer rustc if required.
    • :meth:~cryptography.fernet.Fernet.decrypt and related methods now accept both str and bytes tokens.
    • Parsing CertificateSigningRequest restores the behavior of enforcing that the Extension critical field must be correctly encoded DER. See the issue <https://github.com/pyca/cryptography/issues/6368>_ for complete details.
    • Added two new OpenSSL functions to the bindings to support an upcoming pyOpenSSL release.
    • When parsing :class:~cryptography.x509.CertificateRevocationList and

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 2
  • woql should return tuples

    woql should return tuples

    https://github.com/terminusdb/terminusdb-client-python/blob/1d04acc95a77c6210d5fd63a27aeecbd591374a4/terminusdb_client/woqlquery/woql_query.py#L951

    needs to be harmonized with Client.get_triples

    area: python client triage 
    opened by majidaldo 0
  • needs to print deprecation warning for woqlclient

    needs to print deprecation warning for woqlclient

    https://github.com/terminusdb/terminusdb-client-python/blob/1d04acc95a77c6210d5fd63a27aeecbd591374a4/terminusdb_client/woqlclient/init.py#L4

    it's confusing to have two clients.

    area: python client triage 
    opened by majidaldo 0
  • api client generation

    api client generation

    openapi-python-client.exe update --url https://raw.githubusercontent.com/terminusdb/openapi-specs/main/terminusdb.yaml
    Updating terminus_db_api_client
    Warning(s) encountered while generating. Client was generated, but some pieces may be missing
    WARNING parsing GET /schema within frame. Endpoint will not be generated.
    
    Incorrect path templating for /schema (Path parameters do not match with path)
    
    
    If you believe this was a mistake or this tool is missing a feature you need, please open an issue at https://github.com/openapi-generators/openapi-python-client/issues/new/choose
    

    probably nothing for terminusdb to do: cause for ref.: https://github.com/openapi-generators/openapi-python-client/issues/539

    bug area: python client triage 
    opened by majidaldo 0
Owner
TerminusDB
Build Data Products
TerminusDB
google-cloud-bigtable Apache-2google-cloud-bigtable (๐Ÿฅˆ31 ยท โญ 3.5K) - Google Cloud Bigtable API client library. Apache-2

Python Client for Google Cloud Bigtable Google Cloud Bigtable is Google's NoSQL Big Data database service. It's the same database that powers many cor

Google APIs 39 Dec 3, 2022
A Relational Database Management System for a miniature version of Twitter written in MySQL with CLI in python.

Mini-Twitter-Database This was done as a database design course project at Amirkabir university of technology. This is a relational database managemen

Ali 12 Nov 23, 2022
Py2neo is a client library and toolkit for working with Neo4j from within Python

Py2neo Py2neo is a client library and toolkit for working with Neo4j from within Python applications. The library supports both Bolt and HTTP and prov

py2neo.org 1.2k Jan 2, 2023
Some scripts for microsoft SQL server in old version.

MSSQL_Stuff Some scripts for microsoft SQL server which is in old version. Table of content Overview Usage References Overview These script works when

ๅฐ็ฆป 5 Dec 29, 2022
Pure Python MySQL Client

PyMySQL Table of Contents Requirements Installation Documentation Example Resources License This package contains a pure-Python MySQL client library,

PyMySQL 7.2k Jan 9, 2023
Python client for Apache Kafka

Kafka Python client Python client for the Apache Kafka distributed stream processing system. kafka-python is designed to function much like the offici

Dana Powers 5.1k Jan 8, 2023
Redis Python Client

redis-py The Python interface to the Redis key-value store. Python 2 Compatibility Note redis-py 3.5.x will be the last version of redis-py that suppo

Andy McCurdy 11k Dec 29, 2022
A fast PostgreSQL Database Client Library for Python/asyncio.

asyncpg -- A fast PostgreSQL Database Client Library for Python/asyncio asyncpg is a database interface library designed specifically for PostgreSQL a

magicstack 5.8k Dec 31, 2022
Redis client for Python asyncio (PEP 3156)

Redis client for Python asyncio. Redis client for the PEP 3156 Python event loop. This Redis library is a completely asynchronous, non-blocking client

Jonathan Slenders 554 Dec 4, 2022
Asynchronous Python client for InfluxDB

aioinflux Asynchronous Python client for InfluxDB. Built on top of aiohttp and asyncio. Aioinflux is an alternative to the official InfluxDB Python cl

Gustavo Bezerra 159 Dec 27, 2022
Google Cloud Client Library for Python

Google Cloud Python Client Python idiomatic clients for Google Cloud Platform services. Stability levels The development status classifier on PyPI ind

Google APIs 4.1k Jan 1, 2023
Official Python low-level client for Elasticsearch

Python Elasticsearch Client Official low-level client for Elasticsearch. Its goal is to provide common ground for all Elasticsearch-related code in Py

elastic 3.8k Jan 1, 2023
High level Python client for Elasticsearch

Elasticsearch DSL Elasticsearch DSL is a high-level library whose aim is to help with writing and running queries against Elasticsearch. It is built o

elastic 3.6k Jan 3, 2023
Python client for InfluxDB

InfluxDB-Python InfluxDB-Python is a client for interacting with InfluxDB. Development of this library is maintained by: Github ID URL @aviau (https:/

InfluxData 1.6k Dec 24, 2022
Confluent's Kafka Python Client

Confluent's Python Client for Apache KafkaTM confluent-kafka-python provides a high-level Producer, Consumer and AdminClient compatible with all Apach

Confluent Inc. 3.1k Jan 5, 2023
Python cluster client for the official redis cluster. Redis 3.0+.

redis-py-cluster This client provides a client for redis cluster that was added in redis 3.0. This project is a port of redis-rb-cluster by antirez, w

Grokzen 1.1k Jan 5, 2023
MinIO Client SDK for Python

MinIO Python SDK for Amazon S3 Compatible Cloud Storage MinIO Python SDK is Simple Storage Service (aka S3) client to perform bucket and object operat

High Performance, Kubernetes Native Object Storage 582 Dec 28, 2022
Pysolr โ€” Python Solr client

pysolr pysolr is a lightweight Python client for Apache Solr. It provides an interface that queries the server and returns results based on the query.

Haystack Search 626 Dec 1, 2022
PyRemoteSQL is a python SQL client that allows you to connect to your remote server with phpMyAdmin installed.

PyRemoteSQL Python MySQL remote client Basically this is a python SQL client that allows you to connect to your remote server with phpMyAdmin installe

ProbablyX 3 Nov 4, 2022