Skip to main content

Python Groonga Client

Project description

PyPI Version Build status

Python Groonga Client. poyonga support to HTTP and GQTP protocol.

Requrements

  • Python 3.6+

Installation

from pip:

pip install --upgrade poyonga

Usage

Setup Groonga Server

$ groonga -n grn.db     # create groonga database file
$ groonga -s grn.db     # start groonga server with GQTP

Basic Usage

>>> from poyonga import Groonga
>>> g = Groonga()
>>> g.protocol
'http'
>>> ret = g.call("status")
>>> ret
<poyonga.result.GroongaResult object at 0x8505ccc>
>>> ret.status
0
>>> ret.body
{u'uptime': 427, u'max_command_version': 2, u'n_queries': 3,
u'cache_hit_rate': 66.6666666666667, u'version': u'1.2.8', u
'alloc_count': 156, u'command_version': 1, u'starttime': 132
8286909, u'default_command_version': 1}
>>>

with eventlet

from poyonga import Groonga
import eventlet

eventlet.monkey_patch()

def fetch(cmd, **kwargs):
    g = Groonga()
    ret = g.call(cmd, **kwargs)
    print ret.status
    print ret.body
    print "*" * 40

cmds = [("status", {}),
        ("log_level", {"level": "warning"}),
        ("table_list", {})
        ("select", {"table": "Site"})]
pool = eventlet.GreenPool()
for cmd, kwargs in cmds:
    pool.spawn_n(fetch, cmd, **kwargs)
pool.waitall()

Custom prefix path

If you use the Custom prefix path and Multi databases , specify prefix_path .

# default is '/d/'
g = Groonga(prefix_path='/db2/')

with Apache Arrow

Groonga supports Apache Arrow, use it with load and select commands.

use poyonga with Apache Arrow, you need pyarrow .

requrie pyarrow:

$ pip install pyarrow

and call with output_type="apache-arrow" option:

from poyonga import Groonga

g = Groonga()
g.call(
    "select",
    table="Users",
    match_columns="name,location_str,description",
    query="東京",
    output_type="apache-arrow",
    output_columns="_key,name",
)

load with input_type="apache-arrow":

import pyarrow as pa
from poyonga import Groonga

# use Apache Arrow IPC Streaming Format
data = [pa.array(["groonga.org"])]
batch = pa.record_batch(data, names=["_key"])
sink = pa.BufferOutputStream()
with pa.ipc.new_stream(sink, batch.schema) as writer:
    writer.write_batch(batch)
buf = sink.getvalue()
values = buf.to_pybytes()

g = Groonga()
g.call("load", table="Site", values=values, input_type="apache-arrow")

more information:

example code

see examples directory

for Developer

install dev dependencies:

$ pip install ".[dev]"

run tests:

$ pytest

run linter:

$ ruff .

run formatter:

$ black --diff .

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

poyonga-0.6.0.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

poyonga-0.6.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file poyonga-0.6.0.tar.gz.

File metadata

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

File hashes

Hashes for poyonga-0.6.0.tar.gz
Algorithm Hash digest
SHA256 4da6c73cbd659297e6f6e88da5363cdf6962dcfc03cefa8fbc0b2627eceefa32
MD5 000379d23a99772fd0241a4e570f9585
BLAKE2b-256 dfaef9cadfc2bf00e973f9df45752eb17ded71665c3558fcb4599ff2e1de7226

See more details on using hashes here.

File details

Details for the file poyonga-0.6.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for poyonga-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8abc4d57568b7aa41fe883f4257ec9f3ed55f1b39980b41f042fbd4bba7c847a
MD5 2f35f520b1c82dd74d1301affc17e206
BLAKE2b-256 6f30f0f667174eccaf28937347259f86ae06c6cfba9469267cbc61e8128f7f8a

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