api - 使用带有参数的 Flask Pyodbc 从 DB2 获取数据
问题描述
所以,我正在使用烧瓶开发 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]数据异常 - SQLSTATE 22023, SQLCODE -302. SQLSTATE: 22023, SQLCODE: -302 (-302) (SQLExecDirectW)')
我怎样才能得到想要的结果?我的错误在哪里?任何帮助将不胜感激。谢谢
解决方案
我没有看到您正在访问Flask 提供的请求数据,例如:
dkbrlg=request.args.get('dkbrlg',0)
推荐阅读
- node.js - 有没有办法使用 Search Tweets: Full Archive / Sandbox with node.js?
- ios - NSFont 在 macOS Catalina 中无法正常工作
- regex - Bash 删除带有双亲的字符串,包括他的内容
- http - Flutter 中的 HTTP 响应
- postgresql - pgAdmin4“无法连接到服务器”
- r - Shiny R中基于conditionalPanel的动态过滤器
- javascript - 如何从元素上的 firefox / Chrome 控制台触发事件
- google-tag-manager - 您可以在 Google 跟踪代码管理器常量中使用其他变量吗?
- attributes - networkx 节点属性如果不存在,则创建它
- time-series - tslearn TimeSeriesKMeans 输出