【发布时间】:2021-01-04 06:13:28
【问题描述】:
我实际上需要在 MySQL 的 grafana 中可视化实时数据。我最初使用一个seed_python文件来生成随机数,但现在我想在MySQL中有连续值
这是我最初使用的python代码
POSSIBLE_STATES = ['ACTIVE', 'INACTIVE']
class MySqlSeeder:
def __init__(self):
config = {
'user': 'root',
'password': 'something',
'host': '192.168.99.100' if script_runs_within_container() else 'localhost',
'port': '3306',
'database': 'team'
}
while not hasattr(self, 'connection'):
try:
self.connection = mysql.connector.connect(**config)
self.cursor = self.connection.cursor()
except InterfaceError:
print("MySQL Container has not started yet. Sleep and retry...")
time.sleep(1)
def seed(self):
print("Clearing old data...")
self.drop_user_table()
print("Start seeding...")
self.create_user_table()
self.insert_users()
self.connection.commit()
self.cursor.close()
self.connection.close()
print("Done")
def create_user_table(self):
sql = '''
CREATE TABLE users(
id INT PRIMARY KEY AUTO_INCREMENT,
number INT
);
'''
self.cursor.execute(sql)
def insert_users(self):
for _ in range(300):
sql = '''
INSERT INTO users (number)
VALUES (%(number)s);
'''
user_data = {
'number': random.randint(1,100)
}
self.cursor.execute(sql, user_data)
def drop_user_table(self):
self.cursor.execute('DROP TABLE IF EXISTS users;')
def script_runs_within_container():
with open('/proc/1/cgroup', 'r') as cgroup_file:
return 'docker' in cgroup_file.read()
MySqlSeeder().seed()
下面是 docker-compose 文件
version: '3.3'
services:
mysql:
image: mysql:latest
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: something
grafana:
image: grafana/grafana
restart: always
ports:
- "3000:3000"
depends_on:
- mysql
mysql_seeding:
build: ./DockerFiles
depends_on:
- mysql
volumes:
grafana-storage:
db_data:
执行连续实时数据生成的最佳方式是什么?
【问题讨论】:
-
提供您想要生成的数据示例。并指定精确 mysql版本。
-
我迷路了。您说您需要“实时数据”,但您粘贴了一个操纵用户的类。你提到的数据在哪里?问题是什么?目的是什么?
-
@Maciek 实际上每次我运行 docker-compose 时,它都会生成一个数字数据(300 个数字)。我想要的是有一个数据生成器,这样它就可以实时不断地将数据添加到我的数据库中,以便我可以在 grafana 中对其进行可视化。
-
@Akina 使用的mysql版本是8.0.21,我需要的数据只是随机数
-
我需要的数据只是随机数 1)这个数据必须在什么范围内? 2)你需要多少个数字? 3)这些数字在数据集中是否必须是唯一的? 4) 你需要多久生成一次这样的数字集?它可能是动态的还是必须将数字放入某个表中?
标签: python mysql grafana test-data