【发布时间】: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_还是错字? -
抱歉。它的错字
-
与其列数据类型共享表架构
-
解决了。我使用
Replacefunc 进行查询。无论如何,谢谢,先生。