Python Groonga Client
Project description
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
Project details
Release history Release notifications | RSS feed
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4da6c73cbd659297e6f6e88da5363cdf6962dcfc03cefa8fbc0b2627eceefa32 |
|
MD5 | 000379d23a99772fd0241a4e570f9585 |
|
BLAKE2b-256 | dfaef9cadfc2bf00e973f9df45752eb17ded71665c3558fcb4599ff2e1de7226 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8abc4d57568b7aa41fe883f4257ec9f3ed55f1b39980b41f042fbd4bba7c847a |
|
MD5 | 2f35f520b1c82dd74d1301affc17e206 |
|
BLAKE2b-256 | 6f30f0f667174eccaf28937347259f86ae06c6cfba9469267cbc61e8128f7f8a |