如何在flask应用程序中向sql存储过程插入变量参数

krcsximq  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(323)

我正在为我的 flask 应用程序寻找一些建议。我希望用户能够点击一个产品的名称,当他们点击时,它会将用户带到一个新的页面,其中包含该特定项目的历史订单表。我已经看了这两个问题(以及更多),但它们似乎没有我想要的答案。表变量作为sql存储过程中的参数如何使用knex将输出参数传递给ms sql存储过程。
在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

{% 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 %}

值[0]是itemid整数。
到目前为止,我已经尝试将路由更改为@app.route('/prev orders/')或@app.route('/prev orders/itemid'),但没有成功。然后,我尝试将第二行更改为def previous\u orders(itemid),但也无法正常工作。
你有什么建议让我试着让它工作吗?谢谢!

ohfgkhjo

ohfgkhjo1#

request.form.get('ItemID')

这期望 ItemID 待发布。如果要在url中传递,请执行以下操作:

@app.route('/prev-orders/<integer:ItemID>')
def previous_orders(ItemID):
   cursor = cnxn.cursor()
   # ... rest of code

然后在html中生成链接:

<a href="{{ url_for('previous_orders', ItemID = value[0]) }}">{{ value[3] }}</a>

另外,作为旁注,我认为以下几行应该是:

cursor.execute(order_history, (ItemID,))

(注意额外的逗号使第二个参数成为有效的元组,我认为这是 execute 方法(预期)

相关问题