在 python web 上单击按钮时执行存储过程

Execute stored procedure when a button is clicked on python web

我正在创建一个网页,显示 database/table 中存在的对象列表。我有一个存储过程,它从 table 检索数据并与每一列相关联,数据将被解析为 table。

<table id="fileTable" class="display">
    <thead>
        <tr>
            <th>Jobstream Id</th>
            <th>Date</th>
            <th>Server Name</th>
            <th>Request Time</th>
            <th>Status</th>
            <th>StepStatus</th>
            <th>LastUpdate</th>
            <th>DeleteJob</th>
        </tr>
    </thead>
    <tbody>
    #for $i in range(0,$rows.__len__())
        <tr>
            <td>$rows[i].get('JobstreamName')</td>
            <td>$rows[i].get('Date')</td>
            <td>$rows[i].get('ServerName')</td>
            <td>$rows[i].get('RequestTime')</td>
            <td>$rows[i].get('Status')</td>
            <td>$rows[i].get('StepStatus')</td>
            <td>$rows[i].get('LastUpdate')</td>
            <td><input type="submit" value="Delete"/></td>
        </tr>
    #end for
    </tbody>
</table>

每行末尾都有一个 "Delete" 按钮,用于删除用户希望删除的任何行(在数据库中)。在存储过程中删除行应该是运行。 我在 python 中确实有一个函数可以执行存储过程。

但是,我不知道如何连接 return 按钮 "JobStream Id" 和 "Date" 作为执行存储过程的参数。

我正在使用 Cheetah 作为 Web 开发工具来 运行 python 代码。 感谢我能得到的任何帮助,在此先感谢。

编辑: 让我在这里改述一下。因此,正在使用存储过程从数据库中提取网页中生成的 table 的数据。我正在尝试添加一个允许用户删除任何行的功能(每行的末尾都有一个删除按钮)。因此,我需要将 传递 html 变量到我的 python 变量 到 运行 另一个存储过程,但我无法这样做。希望这能澄清大部分的困惑。谢谢

完整代码如下:

def getJobStreamStatus(Delete):
    Delete = 'Just a random string'
    user,pwd,server,db =  SPCaller.parseLogin('DMClient@gpdevdb81\dmresrchdbdev.EquityData')
    db =  DB.dbConn(computerName=server,databaseName=db,userName=user,password=pwd)
    #results = SPCaller.readSPReturnDict('getJobStreamRerunStatus',None, 'DMClient@gpdevdb81\dmresrchdbdev.EquityData')
    cols, rs = db.getResultSetFromSP('getJobStreamRerunStatus',None)
    #html = []
    definition = """<br><br><br><br><br><br><HR>$title 
    <table id="fileTable" class="display">
        <thead>
            <tr>
                <th>Jobstream Id</th>
                <th>Date</th>
                <th>Server Name</th>
                <th>Request Time</th>
                <th>Status</th>
                <th>StepStatus</th>
                <th>LastUpdate</th>
                <th>DeleteJob</th>
            </tr>
        </thead>
        <tbody>
        #for $i in range(0,$rows.__len__())
            <tr>
            <td>$rows[i].get('JobstreamName')</td>
            <td>$rows[i].get('Date')</td>
            <td>$rows[i].get('ServerName')</td>
            <td>$rows[i].get('RequestTime')</td>
            <td>$rows[i].get('Status')</td>
            <td>$rows[i].get('StepStatus')</td>
            <td>$rows[i].get('LastUpdate')</td>
            <td><input type="button" value="Delete" name='btnEdit' class='btnEdits' /></td>
            </tr>
        #end for
        </tbody>
    </table>
    """ 

    return str(Template(definition, searchList=[{'cols':cols, 'rows':arrToDict(cols,rs),'Delete':Delete,'title':'Showing all jobs in the rerun queue with status <b>waiting: 0, running: 2, and failed: 3</b><br><br>'}]))

我不知道 Python,但我认为您可以为每一行创建一个表单,并使用显示行的 ID 添加一个隐藏字段。

当用户点击提交按钮时,您将很容易读取请求表单集合的隐藏字段的值并将其传递给存储过程:

#for $i in range(0,$rows.__len__())
    <tr>
        <form action = "....">
           <input type="hidden" name="id" value="$rows[i].get('Id')"> 
           <td>$rows[i].get('JobstreamName')</td>
           <td>$rows[i].get('Date')</td>
           <td>$rows[i].get('ServerName')</td>
           <td>$rows[i].get('RequestTime')</td>
           <td>$rows[i].get('Status')</td>
           <td>$rows[i].get('StepStatus')</td>
           <td>$rows[i].get('LastUpdate')</td>
           <td><input type="submit" value="Delete"/></td>
        </form>
    </tr>
#end for

上面的代码假定您的数据中有一个 id 字段。