создание строки InfxDB в командной строке с использованием argparse - PullRequest
1 голос
/ 08 мая 2020

Я читаю данные из Infxdb в pandas с помощью следующего кода: -

import pandas as pd
from influxdb import InfluxDBClient
client = InfluxDBClient(host='10.0.0.0', port=7076, username='abcdefghi',
                        password='dsdsd', ssl=False, verify_ssl=False)
read_client.switch_database('test')

q = 'SELECT * FROM "abc"
df = pd.DataFrame(read_client.query(
       q, chunked=False, chunk_size=10000).get_points())
df

Затем я выполняю некоторую обработку.

Теперь у меня 50 доменов, и для некоторых доменов influxdbclient отличается. Теперь я хочу что-то сделать, чтобы он мог принимать входные данные из argpase, и я мог передать клиенту чтения в командной строке. Я хочу сохранить одну общую соединительную строку, которая будет по умолчанию, и если мы передадим --influx_host в командной строке, она должна это учитывать. Я новичок в таком программировании в python. Мне удалось добиться передачи переменных, но не удалось создать строку подключения. Я буду признателен за любую помощь.

В принципе, если я смогу сделать что-то вроде ниже или что-нибудь получше :-

python test.py -influx_host 10.0.0.10 --port 7076

1 Ответ

1 голос
/ 08 мая 2020

Вы должны получить аргументы

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--influx_host', default='10.0.0.10')
parser.add_argument('--port', default=7076)
args = parser.parse_args()  # it will use values from `sys.argv` 

и использовать args.influx_host и args.port в коде

client = InfluxDBClient(host=args.influx_host, port=args.port, ...)

И теперь вы можете запустить его с аргументами

python test.py --influx_host 10.0.0.10 --port 7076

или без аргументов

python test.py

или только с некоторыми аргументами

python test.py --influx_host 10.0.0.10
python test.py --port 7076

Если вы работаете без --influx_host и / или --port, тогда используются значения по умолчанию из .add_argument()


Не тестировалось, потому что у меня нет influxdb, но args показывает ожидаемые значения

import argparse
import pandas as pd
from influxdb import InfluxDBClient

# --- args ---

parser = argparse.ArgumentParser()
parser.add_argument('--influx_host', default='10.0.0.10')
parser.add_argument('--port', default=7076)
args = parser.parse_args()  # it will use values from `sys.argv`  
#args = parser.parse_args(['--influx_host', 'localhost', ]) # for tests

print(args)

# --- rest ---

client = InfluxDBClient(host=args.influx_host, port=args.port, username='abcdefghi',
                    password='dsdsd', ssl=False, verify_ssl=False)
read_client.switch_database('test')

q = 'SELECT * FROM "abc"'
df = pd.DataFrame(read_client.query(q, chunked=False, chunk_size=10000).get_points())
print(df)
...