Python クライアント
検索
GET CSV
import requests
params = {"q":"select * from example", "format":"csv", "heading":"false"}
response = requests.get("http://127.0.0.1:5654/db/query", params)
print(response.text)書き込み
POST CSV
import requests
csvdata = """temperature,1677033057000000000,21.1
humidity,1677033057000000000,0.53
"""
response = requests.post(
"http://127.0.0.1:5654/db/write/example?heading=false",
data=csvdata,
headers={'Content-Type': 'text/csv'})
print(response.json())例 - matplotlib
📌
テストデータを取り込むには、シェルスクリプトによる波形の書き込みの以下のコマンドを使用します。
sh gen_wave.sh | machbase-neo shell import --timeformat=s EXAMPLEPythonコード
import requests
import json
import datetime
import matplotlib.pyplot as plt
import numpy as np
url = "http://127.0.0.1:5654/db/query"
querystring = {"q":"select * from example order by time limit 200"}
response = requests.request("GET", url, params=querystring)
data = json.loads(response.text)
sinTs, sinSeries, cosTs, cosSeries = [], [], [], []
for row in data["data"]["rows"]:
ts = datetime.datetime.fromtimestamp(row[1]/1000000000)
if row[0] == 'wave.cos':
cosTs.append(ts)
cosSeries.append(row[2])
else:
sinTs.append(ts)
sinSeries.append(row[2])
plt.plot(sinTs, sinSeries, label="sin")
plt.plot(cosTs, cosSeries, label="cos")
plt.title("チュートリアルの波形")
plt.legend()
plt.show()
例 - pandas
テーブルからDataFrameの読み込み
- machbase-neoのHTTP APIを使って、pandasのDataFrameを読み込みます。
from urllib import parse
import pandas as pd
query_param = parse.urlencode({
"q": "select * from example order by time limit 500",
"format": "csv",
"timeformat": "s",
})
df = pd.read_csv(f"http://127.0.0.1:5654/db/query?{query_param}")
df
DataFrameのテーブルへの書き込み
- machbase-neoのHTTP APIで、pandasのDataFrameをタグテーブルに保存します。
import io, requests
stream = io.StringIO()
df.to_csv(stream, encoding='utf-8', header=False, index=False)
stream.seek(0)
file_upload_resp = requests.post(
"http://127.0.0.1:5654/db/write/example?timeformat=s&method=append",
headers={'Content-type':'text/csv'},
data=stream )
print(file_upload_resp.json()){'success': True, 'reason': 'success, 500 record(s) appended', 'elapse': '2.288791ms'}CSVの読み込み
- pandasとurllibをインポートします。
from urllib import parse
import pandas as pd"format": "csv"オプションでクエリURLを作成し、read_csvを呼び出します。
時刻データの精度はtimeformatで指定します。s、ms、us、ns(既定値)を使用できます。
query_param = parse.urlencode({
"q":"select * from example order by time limit 500",
"format": "csv",
"timeformat": "s",
})
df = pd.read_csv(f"http://127.0.0.1:5654/db/query?{query_param}")
df圧縮CSVの読み込み
- HTTP APIからgzip圧縮されたCSVを読み込みます。
from urllib import parse
import pandas as pd
import requests
import ioquery_param = parse.urlencode({
"q":"select * from example order by time desc limit 1000",
"format": "csv",
"timeformat": "s",
"compress": "gzip",
})
response = requests.get(f"http://127.0.0.1:5654/db/query?{query_param}", timeout=30, stream=True)
df = pd.read_csv(io.BytesIO(response.content))
df最終更新日