Как кэшировать функцию, которая принимает соединение с базой данных в качестве входных данных, используяstreamlitPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как кэшировать функцию, которая принимает соединение с базой данных в качестве входных данных, используяstreamlit

Сообщение Anonymous »


У меня есть подключение к базе данных:

импортировать sqlalchemy как sa двигатель = sa.create_engine('my_info') соединение = engine.connect() Впоследствии у меня есть функция:

импортировать панд как pd защита load_data (соединение): sql = 'выбрать * из имени таблицы' df = pd.read_sql(sql, con = соединение) возврат DF Это часть приложения в Streamlit, над которым я работаю. Мне нужно, чтобыstreamlit кэшировал выходные данные моей функции load_data. Я думал, это работает так:

импортировать панд как pd импортировать поток, освещенный как st @st.cache() защита load_data (соединение): sql = 'выбрать * из имени таблицы' df = pd.read_sql(sql, con = соединение) возврат DF Но это дает мне следующую ошибку:

UnhashableTypeError: невозможно хэшировать объект типа встроенный.weakref, найденный в аргументах load_data(). Ошибка намного длиннее, и если это поможет, я ее опубликую. Ошибка также содержит ссылку на документацию по стримлиту. Я прочитал его и переформулировал свой код так:

@st.cache() защита DBConnection(): двигатель = sa.create_engine("my_info") конн = двигатель.connect() возврат соединения конн = БДСоединение() @st.cache(hash_funcs={DBConnection: id}) защита load_data (соединение): sql = 'выбрать * из имени таблицы' df = pd.read_sql(sql, con = соединение) возврат DF Но это выдает NameError:

NameError: имя «DBConnection» не определено У меня закончились идеи, буду очень признателен за любую помощь. Вполне возможно, что я неправильно понял документацию, поскольку она предполагает наличие большого количества предварительных знаний о процессе хеширования и кэширования.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»