【问题标题】:Get data from DB2 with Flask Pyodbc with parameter使用带参数的 Flask Pyodbc 从 DB2 获取数据
【发布时间】:2020-10-21 09:17:48
【问题描述】:

所以,我正在使用烧瓶开发 API。数据在 DB2 中。我尝试如下连接pyodbc

@app.route('/api/acrdkl/all', methods=['GET'])
def api_all():
    conn = pyodbc.connect("DSN=AS400;UID=....;PWD=....")
    cur = conn.cursor()
    all_books = cur.execute(""" select trim(dkkdcb), trim(dkkdps), trim(dkcob), trim(dkureg), trim(dkbktg), trim(dkblrg), trim(dkthrg)
    from simdta.ACRDKL where dkkdcb=1402 and dkblrg=10 and dkthrg=2020""")
    rows = cur.fetchall()
    result = []
    for dt in rows:
        result.append([x for x in dt])
    return jsonify(result)

结果显示为 JSON。

但是当我尝试使用如下参数时

@app.route('/api/acrdkl/filter', methods=['GET'])
def api_filter():

    dkkdcb = request.args.get('DKKDCB', 0)
    dkblrg = request.args.get('DKBLRG', 0)
    dkthrg = request.args.get('DKTHRG', 0)

    query = """selecttrim(dkkdcb),trim(dkkdps),trim(dkcob),trim(dkureg),
    trim(dkbktg), trim(dkblrg), trim(dkthrg)
    from simdta.ACRDKL WHERE """

    conn = pyodbc.connect("DSN=AS400;UID=.....;PWD=.....")
    cur = conn.cursor()
    rows = cur.execute(query, [int(dkkdcb), int(dkblrg), int(dkthrg)])
    rows.fetchall()
    print("rows 2 ", rows)
    result = []
    for dt in rows:
        result.append([x for x in dt])
    return jsonify(results)

然后我转到这个http://127.0.0.1:5000/api/acrdkl/filter?DKKDCB=1402&DKBLRG=10&DKTHRG=2020,它会抛出这样的错误

pyodbc.DataError: ('22023', '[22023] [Microsoft][ODBC DB2 Driver]Data 异常 - SQLSTATE 22023,SQLCODE -302。 SQLSTATE:22023,SQLCODE: -302 (-302) (SQLExecDirectW)')

如何获得想要的结果?我的错误在哪里?任何帮助将不胜感激。谢谢

【问题讨论】:

  • dkkdcb_还是错字?
  • 抱歉。它的错字
  • 与其列数据类型共享表架构
  • 解决了。我使用Replace func 进行查询。无论如何,谢谢,先生。

标签: api flask db2 pyodbc


【解决方案1】:

我没有看到您正在访问request data provided by Flask,例如:

dkbrlg=request.args.get('dkbrlg',0)

【讨论】:

  • 我已经尝试了您上面建议的方式,但仍然出现错误。我错过了什么吗?
  • 你试过小写吗?参数标准化为小写
  • 是的,我做到了。也没有用。有趣的是,如果设置了参数值,就会显示结果。但如果参数值是随机的,则不是。
猜你喜欢
  • 1970-01-01
  • 2021-12-06
  • 2019-02-07
  • 2014-10-28
  • 2019-02-18
  • 1970-01-01
  • 2014-09-13
相关资源
最近更新 更多