へっぽこプログラマーの備忘録
プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。
menu
keyboard_arrow_up
Top
search
close
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
Home
›
Python
›
[Python] InfluxDB 1.8 で influxdb_client を使う
2022/12/21
[Python] InfluxDB 1.8 で influxdb_client を使う
update
event_note
label
InfluxDB
label
Python
python で InfluxDB v1 に対してデータの読み書きを行う際に、ayncio を使って非同期化したいなと思ったのですが、今使っているライブラリの InfluxDBClient は asyncio に対応していないようでした。
代わりに influxdata 社の influx-client を使うと asyncio を使えそうだったのですが、こちらは基本的に InfluxDB v2 以降にのみ対応しているようで、Flux という言語にしか対応していません。 InfluxDB v1 以前は InfluxQL という SQL に近い言語が使われていました。 こちら、以下のページが参考になりました。 - https://rabbit-note.com/2022/09/12/influxdb-2-flux/ ただ、InfluxDB 1.7以降でも設定を変更することで Flux が使えるようになるそうです。 - https://github.com/influxdata/influxdb-client-python#influxdb-1-8-api-compatibility 従って、InfluxDB v1 でも Flux を有効にしたうえで、Flux でクエリを記述してデータを取得するようにすれば、asyncio を使って非同期化することができそうです。 ちなみに、データの書き込みに関しては Flux は関係ありませんでした。 以下、InfluxDB v1 の前提で書いていますが、v2 でも基本的には同じです。 `bucket` `token` の指定方法が異なるだけです。 ## 環境 - InfluxDB 1.8.10 ## Flux 言語を有効化する InfluxDB を Docker で動かしていたのですが、環境変数に以下を追加するだけで OK でした。 ``` INFLUXDB_HTTP_FLUX_ENABLED=true ``` ## サンプルコード ### データの書き込み (write_api) ``` import asyncio from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync from influxdb_client.client.write.point import Point from influxdb_client.domain.write_precision import WritePrecision if __name__ == '__main__': async def main(): url = 'http://
:8086' username = 'username' password = 'password' dbname = 'dbname' rpname = 'rpname' # https://zeppelin.apache.org/docs/0.10.1/interpreter/influxdb.html bucket = f'{dbname}/{rpname}' # InfluxDB 1.8 では dbname/rpname がバケット名として使われる token = f'{username}:{password}' # InfluxDB 1.8 では username:password がトークンとして使われる org = "-" # InfluxDB 1.8 ではよくわからん data = [] data.append({ 'fields': { 'hoge': 1 }, 'measurement': 'measurement', 'tags': { 'hostname': 'hostname', } }) points = [ Point.from_dict(i, WritePrecision.MS) for i in data ] async with InfluxDBClientAsync(url=url, token=token, org=org) as client: write_api = client.write_api() successfully = await write_api.write(bucket=bucket, record=points) print(successfully) ``` ### データの読み込み (query_api) ``` import asyncio from influxdb_client.client.influxdb_client_async import InfluxDBClientAsync if __name__ == '__main__': async def main(): url = 'http://
:8086' username = 'username' password = 'password' dbname = 'dbname' rpname = 'rpname' # https://zeppelin.apache.org/docs/0.10.1/interpreter/influxdb.html bucket = f'{dbname}/{rpname}' # InfluxDB 1.8 では dbname/rpname がバケット名として使われる token = f'{username}:{password}' # InfluxDB 1.8 では username:password がトークンとして使われる org = "-" # InfluxDB 1.8 ではよくわからん query = f""" from(bucket: "{bucket}") |> range(start: -10m) |> filter(fn:(r) => r._measurement == "measurement") |> filter(fn: (r) => r["_field"] == "field") |> aggregateWindow(every: 1m, fn: mean, createEmpty: false) """ async with InfluxDBClientAsync(url=url, token=token, org=org) as client: tables = await client.query_api().query(query=query) for table in tables: print(table) for record in table.records: print (record.values) asyncio.run(main()) ``` Flux については以下のページが参考になりました。 - https://qiita.com/riverplus/items/20456e4188a4c0f5f62d
## 参考 URL - https://powersj.io/posts/influxdb-docker-dev/ - https://github.com/influxdata/influxdb-client-python#async-write-api - https://influxdb-client.readthedocs.io/en/stable/api.html#queryapi
tweet
facebook
Pocket
B!
はてブ
LINE
chevron_left
chevron_right
Translate
Popular Posts
TortoiseGit でコミットメッセージを変更する
image
NO IMAGE
smbclient で session setup failed: NT_STATUS_LOGON_FAILURE が表示される
Docker for Windows の設定
image
NO IMAGE
マージ元ブランチとマージ先ブランチ
image
NO IMAGE
TortoiseSVN ロック状態のチェック
TortoiseGit でブランチ間の差分を見る
image
NO IMAGE
Visual Studio で文字がにじむ(ぼやける)
image
NO IMAGE
AsciidocFX をビルドする
image
NO IMAGE
PowerShellでブレークポイントが設定できない場合
[Python] 文字列の判定で、None と空文字を同時に判定する
Labels
.NET Core
31
.NET Framework
17
.NET Standard
2
AdminLTE
1
AI
1
Apache
3
AppVeyor
2
AsciiDoc
7
ASP.NET Core
55
Atom
4
AWS
5
AWS Cloud9
4
blockdiag
1
Blogger
13
Bootstrap
3
C/C++
6
C#
106
CentOS
3
Chrome
1
Chronograf
3
chrony
1
Codecov
1
CSS
1
Docker
80
DokuWiki
4
Doxygen
1
draw.io
1
EasyTag
1
Electron
1
Electron.NET
2
Entity Framework Core
9
Excel
2
FFmpeg
3
Firefox
6
Flask
1
Git
19
GitBook
4
GitBucket
7
GitHub
7
GitLab
39
Go
1
Google
1
Google Cloud Platform
1
Grafana
13
GStreamer
2
HTML
5
IIS
8
InfluxDB
14
JavaScript
15
Jekyll
2
Jenkins
7
Linux
34
Log4View
1
MahApps.Metro
3
MaterialDesignInXamlToolkit
1
MkDocs
2
MongoDB
5
MVC
1
MVVM
6
nginx
3
NLog
3
Node.js
8
npm
1
NVIDIA
3
onvif
1
OpenAPI
2
OpenCV
4
OpenSSL
3
OpenVINO
2
ownCloud
2
pandas
1
Pine Script
1
PlantUML
5
Portainer
3
PowerShell
8
Prism
2
PySide
19
Python
88
PyTorch
1
RabbitVCS
1
Razor
3
redis
1
Redmine
33
Redoc
1
remark.js
2
rocketchat
10
Ruby
3
scikit-learn
1
shotcut
1
SignalR
1
Slack
1
Socket.IO
1
SonarQube
5
Sphinx
10
SQL Server
5
SQLite
1
StableDiffusion
1
Subversion
2
Swagger
1
Swarmpit
1
Syslog
3
Telegraf
6
Tesseract
3
TestLink
2
Tomcat
2
TortoiseGit
11
TortoiseSVN
2
Trading View
1
Traefik
3
Travis CI
1
Ubuntu
31
Visual Studio
39
Visual Studio Code
10
VSCode
8
Vue.js
8
Windows
62
Windows 10
5
Windows ADK
1
Windows API
2
Windows Embedded
4
wkhtmltopdf
2
Word
3
WPF
12
WSL
5
WSL2
5
Xamarin
1
xUnit
5
yaml
1
yolo
1
アプリケーション
1
デザインパターン
1
テスト
1
バッチファイル
2
プログラミング
4
ライセンス
1
暗号資産(仮想通貨)
1
英語
2
確定申告
1
機械学習
1
強化学習
1
雑記
1
書籍
1
数学
1
正規表現
1
動画編集
1
Blog Archive
►
2024
(18)
►
9月
(5)
►
8月
(1)
►
7月
(2)
►
6月
(1)
►
4月
(2)
►
3月
(1)
►
2月
(5)
►
1月
(1)
►
2023
(30)
►
12月
(3)
►
11月
(5)
►
10月
(2)
►
9月
(1)
►
8月
(2)
►
7月
(4)
►
6月
(2)
►
5月
(3)
►
4月
(2)
►
3月
(2)
►
2月
(3)
►
1月
(1)
▼
2022
(106)
▼
12月
(5)
Influxdb Cloud を使ってみた
[Python] InfluxDB 1.8 で influxdb_client を使う
Grafana から Rocket.Chat へ通知を行う
Grafana から Slack へ通知を行う
Ubuntu の Emergency Mode で日本語配列のキーボードを使う
►
11月
(1)
►
10月
(3)
►
9月
(6)
►
8月
(7)
►
7月
(6)
►
6月
(13)
►
5月
(9)
►
4月
(15)
►
3月
(11)
►
2月
(14)
►
1月
(16)
►
2021
(85)
►
12月
(11)
►
11月
(6)
►
10月
(4)
►
9月
(10)
►
8月
(8)
►
7月
(4)
►
6月
(18)
►
5月
(7)
►
4月
(8)
►
3月
(2)
►
2月
(2)
►
1月
(5)
►
2020
(56)
►
12月
(1)
►
11月
(3)
►
10月
(3)
►
9月
(3)
►
8月
(3)
►
7月
(7)
►
6月
(7)
►
5月
(2)
►
4月
(6)
►
3月
(6)
►
2月
(3)
►
1月
(12)
►
2019
(92)
►
12月
(13)
►
11月
(9)
►
10月
(3)
►
9月
(2)
►
8月
(3)
►
7月
(5)
►
6月
(11)
►
5月
(6)
►
4月
(17)
►
3月
(9)
►
2月
(6)
►
1月
(8)
►
2018
(100)
►
12月
(1)
►
11月
(11)
►
10月
(8)
►
9月
(6)
►
8月
(10)
►
7月
(10)
►
6月
(8)
►
5月
(9)
►
4月
(8)
►
3月
(14)
►
2月
(4)
►
1月
(11)
►
2017
(117)
►
12月
(14)
►
11月
(20)
►
10月
(17)
►
9月
(19)
►
8月
(10)
►
7月
(8)
►
6月
(3)
►
5月
(6)
►
4月
(5)
►
3月
(2)
►
2月
(8)
►
1月
(5)
►
2016
(91)
►
12月
(5)
►
11月
(9)
►
10月
(11)
►
9月
(9)
►
8月
(6)
►
7月
(14)
►
6月
(14)
►
5月
(11)
►
4月
(10)
►
3月
(2)
►
2015
(23)
►
12月
(4)
►
11月
(2)
►
10月
(8)
►
9月
(8)
►
7月
(1)
►
2013
(3)
►
11月
(1)
►
9月
(1)
►
7月
(1)
►
2012
(2)
►
7月
(1)
►
6月
(1)
►
2011
(1)
►
9月
(1)
►
2009
(1)
►
7月
(1)
►
2008
(2)
►
11月
(1)
►
7月
(1)
►
2007
(3)
►
10月
(3)