在Flask App中运行Cx_Oracle查询

时间:2015-10-27 19:19:15

标签: python sql oracle flask cx-oracle

我正在尝试构建一个应用程序,其中有一个页面,我输入一个id并对其运行查询并显示结果。我到目前为止的代码如下。

我保持werkzeug错误:

BuildError: ('show_entries', {}, None)

app.py

import cx_Oracle

# Run the query to display the results
@app.route('/matcher/<int:account_id>', methods=['GET', 'POST'])
def show_entries(account_id):
    sql = """SELECT item1, 
             item2, 
             item3, 
             item4, 
             item5, 
             item6
             FROM TABLE
             WHERE account_id = ?"""
    c = g.db.cursor()
    c.execute(sql, account_id)

2 个答案:

答案 0 :(得分:0)

您收到该错误是因为您的show_entries方法需要account_id参数,但您的url_for来电未提供。{/ p>

看起来你试图让show_entries方法将account_id参数作为表单中的GET值,但作为方法中URL(不是GET参数)的一部分定义,所以你有不匹配。

您可以在方法定义中为account_id变量指定一个默认值,并检查其在GET参数中的存在性:

@app.route('/matcher/', methods=['GET', 'POST'])
@app.route('/matcher/<int:account_id>', methods=['GET', 'POST'])
def show_entries(account_id=0):
    if request.method == 'GET' and not account_id:
        account_id = request.args.get('account_id', 0)
    ...

文档:url_forrequest.args.get

答案 1 :(得分:0)

这项工作的补充就在这里。我的原始代码中的其他所有内容都很好,即使不是最佳的。

        c.execute(sql, account_id=account_id)