如何在 Flask 应用程序中向 SQL 存储过程插入可变参数
How to insert variable parameter to SQL stored procedure in Flask app
我正在为我的 Flask 应用寻求一些建议。我希望用户能够单击产品名称,当他们单击时,它会将用户带到一个新页面,其中包含该特定项目的 table 历史订单。我已经查看了这两个问题(以及更多),但它们似乎没有我正在寻找的答案。
Table Variable As a parameter In My sql Stored Procedures
how to pass output parameter to ms-sql stored procedure using knex。
在我的 app.py 文件中,我有以下存储过程 -
order_history = '''exec Web_ProductHistory ?'''
这是它的关联路由和函数 -
@app.route('/prev-orders/')
def previous_orders():
ItemID = request.form.get('ItemID')
cursor = cnxn.cursor()
cursor.execute(order_history, (ItemID))
data = cursor.fetchall()
return render_template('previous-orders.html', data=data)
我有一个 table 装满库存物品的工作,这里是 table -
{% for value in data %}
<tr>
<td class="hidden"></td>
<td></td>
<td><span style="margin-left: 40px">{{ value[1] }}</span></td>
<td><a name="{{ value[0] }}" class="black-text" href="{{url_for('previous_orders')}}" target="_blank">{{ value[3] }}</a></td>
<td>{{ value[12] }}</td>
<td>{{ value[23] }}</td>
<td class="over-25">{{ value[18] }}</td>
<td>{{ value[6] }}</td>
<td>{{ value[7] }}</td>
<td><a name="{{ value[0] }}" class="black-text" href="{{url_for('live_so')}}" target="_blank">{{ value[14] }}</a></td>
<td>{{ value[16] }}</td>
<td>{{ value[15] }}</td>
<td>{{ value[22] }}</td>
<td>{{ value[2] }}</td>
</tr>
{% endfor %}
value[0] 是 ItemID 整数。
到目前为止,我已经尝试将路线更改为 @app.route('/prev-orders/') 或 @app.route('/prev-orders/ItemID') 但那不行。然后我尝试将第二行更改为
def previous_orders(ItemID) 但这也无法正常工作。
你有什么建议让我尝试让它工作吗?谢谢!
request.form.get('ItemID')
这需要发布 ItemID
。如果你想在 URL 中传递它,那么做这样的事情:
@app.route('/prev-orders/<integer:ItemID>')
def previous_orders(ItemID):
cursor = cnxn.cursor()
# ... rest of code
然后在您的 HTML 中生成 link:
<a href="{{ url_for('previous_orders', ItemID = value[0]) }}">{{ value[3] }}</a>
此外,作为旁注,我认为以下行应该是:
cursor.execute(order_history, (ItemID,))
(注意使第二个参数成为有效元组的额外逗号,我认为这是 execute
方法所期望的)
我正在为我的 Flask 应用寻求一些建议。我希望用户能够单击产品名称,当他们单击时,它会将用户带到一个新页面,其中包含该特定项目的 table 历史订单。我已经查看了这两个问题(以及更多),但它们似乎没有我正在寻找的答案。 Table Variable As a parameter In My sql Stored Procedures how to pass output parameter to ms-sql stored procedure using knex。
在我的 app.py 文件中,我有以下存储过程 -
order_history = '''exec Web_ProductHistory ?'''
这是它的关联路由和函数 -
@app.route('/prev-orders/')
def previous_orders():
ItemID = request.form.get('ItemID')
cursor = cnxn.cursor()
cursor.execute(order_history, (ItemID))
data = cursor.fetchall()
return render_template('previous-orders.html', data=data)
我有一个 table 装满库存物品的工作,这里是 table -
{% for value in data %}
<tr>
<td class="hidden"></td>
<td></td>
<td><span style="margin-left: 40px">{{ value[1] }}</span></td>
<td><a name="{{ value[0] }}" class="black-text" href="{{url_for('previous_orders')}}" target="_blank">{{ value[3] }}</a></td>
<td>{{ value[12] }}</td>
<td>{{ value[23] }}</td>
<td class="over-25">{{ value[18] }}</td>
<td>{{ value[6] }}</td>
<td>{{ value[7] }}</td>
<td><a name="{{ value[0] }}" class="black-text" href="{{url_for('live_so')}}" target="_blank">{{ value[14] }}</a></td>
<td>{{ value[16] }}</td>
<td>{{ value[15] }}</td>
<td>{{ value[22] }}</td>
<td>{{ value[2] }}</td>
</tr>
{% endfor %}
value[0] 是 ItemID 整数。
到目前为止,我已经尝试将路线更改为 @app.route('/prev-orders/') 或 @app.route('/prev-orders/ItemID') 但那不行。然后我尝试将第二行更改为 def previous_orders(ItemID) 但这也无法正常工作。
你有什么建议让我尝试让它工作吗?谢谢!
request.form.get('ItemID')
这需要发布 ItemID
。如果你想在 URL 中传递它,那么做这样的事情:
@app.route('/prev-orders/<integer:ItemID>')
def previous_orders(ItemID):
cursor = cnxn.cursor()
# ... rest of code
然后在您的 HTML 中生成 link:
<a href="{{ url_for('previous_orders', ItemID = value[0]) }}">{{ value[3] }}</a>
此外,作为旁注,我认为以下行应该是:
cursor.execute(order_history, (ItemID,))
(注意使第二个参数成为有效元组的额外逗号,我认为这是 execute
方法所期望的)