如何使用 SQL 查询中的值填充流式选择框
How to populate a streamlit selectbox with vlaues from a SQL query
目标是让流线型选择框显示来自数据库符号列的货币对列表。
cursor.execute("""
SELECT symbol FROM pair LIMIT 3
""")
pairs = cursor.fetchall()
st.write(pairs)
输出为
[
0:[
0:"ETHBTC"
]
1:[
0:"LTCBTC"
]
2:[
0:"BNBBTC"
]
]
我有一个嵌套的 for 循环来检索每对的符号
for list in pairs:
for pair in list:
st.write(pair)
输出为:
ETHBTC
LTCBTC
BNBBTC
到目前为止一切顺利。但是当我将它加载到选择框中时,行为变得很奇怪。这只是一个例子,但我有很多不想要的结果。
st.sidebar.selectbox('Select symbol', pair)
B
N
B
B
T
C
我现在被困了几个小时。如果有人可以帮助我,那就太好了。谢谢。
您必须将序列传递给 select 框,并且该序列的每个元素都将显示为 select 的可能元素。我假设你传递的是 pair = 'BNBBTC'。这意味着每个字符都会成为您可以选择的一个值。但是,您必须传递给 select 框的内容是
choices = ['ETHBTC', 'LTCBTC', 'BNBBTC']
.
As fetchall
returns 一个元组列表,你可以得到它作为
options = [row[0] for row in cursor.fetchall()]
最后做
st.sidebar.selectbox('Select symbol', options)
假设您要在 for 循环内添加选择框,发生的情况是 Python 将字符串视为一组可迭代的字符。 st.sidebar.selectbox
需要一个可迭代对象(list-like),因此获取每个字符并使其成为选择框中的一个选项。
我不太确定我是否理解你显示为 JSON (?) 的数据结构,但我会使用 list-comprehension 来提取你想要的值。效果
pairs = [x[0][0] for x in cursor.fetchall()]
目标是让流线型选择框显示来自数据库符号列的货币对列表。
cursor.execute("""
SELECT symbol FROM pair LIMIT 3
""")
pairs = cursor.fetchall()
st.write(pairs)
输出为
[
0:[
0:"ETHBTC"
]
1:[
0:"LTCBTC"
]
2:[
0:"BNBBTC"
]
]
我有一个嵌套的 for 循环来检索每对的符号
for list in pairs:
for pair in list:
st.write(pair)
输出为:
ETHBTC
LTCBTC
BNBBTC
到目前为止一切顺利。但是当我将它加载到选择框中时,行为变得很奇怪。这只是一个例子,但我有很多不想要的结果。
st.sidebar.selectbox('Select symbol', pair)
B
N
B
B
T
C
我现在被困了几个小时。如果有人可以帮助我,那就太好了。谢谢。
您必须将序列传递给 select 框,并且该序列的每个元素都将显示为 select 的可能元素。我假设你传递的是 pair = 'BNBBTC'。这意味着每个字符都会成为您可以选择的一个值。但是,您必须传递给 select 框的内容是
choices = ['ETHBTC', 'LTCBTC', 'BNBBTC']
.
As fetchall
returns 一个元组列表,你可以得到它作为
options = [row[0] for row in cursor.fetchall()]
最后做
st.sidebar.selectbox('Select symbol', options)
假设您要在 for 循环内添加选择框,发生的情况是 Python 将字符串视为一组可迭代的字符。 st.sidebar.selectbox
需要一个可迭代对象(list-like),因此获取每个字符并使其成为选择框中的一个选项。
我不太确定我是否理解你显示为 JSON (?) 的数据结构,但我会使用 list-comprehension 来提取你想要的值。效果
pairs = [x[0][0] for x in cursor.fetchall()]