根据id更新pandas表



嗨,我有一个代码连接到DB (SQLite)这是显示在web应用程序

上的数据帧Dataframe

如您所见,在第9行中,结果列中没有值我想要的是用户可以通过行id

更新一个特定的结果这是一段代码:

if selected == 'Editor':
project_names = st.selectbox('Select Project:', ['Lightspeed', 'Quantom'])
if project_names == 'Lightspeed':
con = sqlite3.connect('Performance.db')
c = con.cursor()
c.execute('''
SELECT
*
FROM Results
''')
# machines_option = ('Select Machine', ('QLS250', 'QLS450', 'QLS650', 'QLS800'))
tdf = pd.DataFrame(c.fetchall(), columns=['Name', 'Test', 'Machine', 'SmartNics', 'Result'])

我想做的是用户可以选择一行并更新该行中的一列

这可能吗?

p。S:如果缺少什么信息,请告诉我

谢谢!

这是可能的研究在https://www.sqlitetutorial.net/sqlite-update/的sqlite更新语句。

  • 创建一个类似数字输入的流光小部件,供用户输入要修改的ID。将其命名为var1。
  • 为结果创建一个数字输入小部件。命名为var2
  • 创建一个按钮,一旦用户完成输入,当按钮被按下时,用以下语句更新sqlite数据库。
UPDATE Results
SET Result = var2
WHERE ID = var1;

Results是表名。

示例代码您可以通过id添加和更新数据。

import streamlit as st 
import sqlite3
import pandas as pd

conn = sqlite3.connect('performance.db')
c = conn.cursor()
def create_result_table():
c.execute('CREATE TABLE IF NOT EXISTS Results(ID integer PRIMARY KEY, Name TEXT, Result integer)')
def add_result(name, result):
c.execute('INSERT INTO Results(name, result) VALUES (?,?)', (name, result))
conn.commit()
def update_result(id, result):
c.execute('UPDATE Results SET result=? WHERE ID=?', (result, id))
conn.commit()

create_result_table()
df = pd.read_sql_query("SELECT * from Results", conn)
st.table(df)
st.subheader('Add')
with st.form(key='add', clear_on_submit=True):
name = st.text_input(label='Enter name')
result = st.number_input(label='Enter result value', min_value=0)
if st.form_submit_button(label='Add'):
add_result(name, result)
st.subheader('Update')
with st.form(key='update', clear_on_submit=True):
idnum = st.number_input(label='Enter id to update', min_value=0)
result = st.number_input(label='Enter result value', min_value=0)
if st.form_submit_button(label='Update'):
update_result(idnum, result)
st.subheader('Updated table')
df = pd.read_sql_query("SELECT * from Results", conn)
st.table(df)
conn.close()

最新更新