Абстрактный

В этой статье показано, как можно быстро использовать SingleStore с Streamlit — платформой приложений с открытым исходным кодом для машинного обучения и обработки данных.

Введение

Документация Streamlit описывает, как подключить Streamlit к MySQL. Адаптировать код для работы с SingleStore несложно. Посмотрим, как.

Для начала нам нужно создать бесплатную учетную запись Managed Service на веб-сайте SingleStore. На момент написания этой статьи учетная запись Managed Service от SingleStore имеет кредиты на сумму 500 долларов США. Этого более чем достаточно для случая, описанного в этой статье.

Создайте таблицу базы данных

В нашей учетной записи управляемой службы SingleStore давайте воспользуемся редактором SQL для создания новой базы данных и таблицы. Мы будем использовать пример, предоставленный Streamlit:

CREATE DATABASE pets;
USE pets;
CREATE TABLE mytable (
     name VARCHAR(80),
     pet VARCHAR(80)
);
INSERT INTO mytable VALUES
('Mary', 'dog'),
('John', 'cat'),
('Robert', 'bird');

Установить Стримлит

Мы установим Streamlit следующим образом:

pip install streamlit

В примере Streamlit используется соединитель MySQL. Однако для большинства случаев использования Python SingleStore рекомендует использовать PyMySQL. Все, что нам нужно сделать, это установить это следующим образом:

pip install PyMySQL

Изменить пример приложения

В файле streamlit_app.py нам нужно внести несколько незначительных изменений:

  • Замените import mysql.connector на import pymysql
  • Замените mysql.connector.connect на pymysql.connect
  • Замените st.secrets["mysql"] на st.secrets["singlestore"]
  • Удалить ссылки на st.cache

Вот полный измененный листинг кода:

# streamlit_app.py
import streamlit as st
import pymysql
# Initialize connection.

def init_connection():
    return pymysql.connect(**st.secrets["singlestore"])
conn = init_connection()
# Perform query.

def run_query(query):
    with conn.cursor() as cur:
        cur.execute(query)
        return cur.fetchall()
rows = run_query("SELECT * FROM mytable;")
# Print results.
for row in rows:
    st.write(f"{row[0]} has a :{row[1]}:")

Создайте файл секретов

Наше локальное приложение Streamlit будет считывать секреты из файла .streamlit/secrets.toml в корневом каталоге нашего приложения. Нам нужно создать этот файл следующим образом:

# .streamlit/secrets.toml
[singlestore]
host = "<TO DO>"
port = 3306
database = "pets"
user = "admin"
password = "<TO DO>"

<TO DO> для хоста и пароля следует заменить значениями, полученными из управляемой службы SingleStore при создании кластера.

Запустите код

Мы можем запустить приложение Streamlit следующим образом:

streamlit run streamlit_app.py

Вывод в веб-браузере должен выглядеть так, как показано на рисунке 1.

Резюме

В этой статье показаны быстрые модификации кода примера Streamlit MySQL, чтобы вместо этого Streamlit можно было использовать с SingleStore. Мы продолжим изучение Streamlit в будущих статьях и будем более подробно использовать его возможности.