poyonga
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
for Developer
install dev dependencies:
$ pip install ".[dev]"
run tests:
$ pytest
run linter:
$ ruff .
run formatter:
$ black --diff .
Links
Metadata
Release files for poyonga 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| poyonga-0.6.0.tar.gz | 13.8 kB | Without provenance | Details for poyonga-0.6.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| poyonga-0.6.0-py3-none-any.whl | Python 3 | none | any | Details for poyonga-0.6.0-py3-none-any.whl |
Total release size: 23.3 kB
Release files / poyonga-0.6.0.tar.gz
| Download URL | poyonga-0.6.0.tar.gz |
|---|---|
| Size | 13.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4da6c73cbd659297e6f6e88da5363cdf6962dcfc03cefa8fbc0b2627eceefa32
|
|
BLAKE2b-256 checksum How to use checksums |
dfaef9cadfc2bf00e973f9df45752eb17ded71665c3558fcb4599ff2e1de7226
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Release files / poyonga-0.6.0-py3-none-any.whl
| Download URL | poyonga-0.6.0-py3-none-any.whl |
|---|---|
| Size | 9.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8abc4d57568b7aa41fe883f4257ec9f3ed55f1b39980b41f042fbd4bba7c847a
|
|
BLAKE2b-256 checksum How to use checksums |
6f30f0f667174eccaf28937347259f86ae06c6cfba9469267cbc61e8128f7f8a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.6
|
Security for poyonga 0.6.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.