我试图使用pyodbc从DB2检索数据,并使用Python以JSON格式打印数据。我有两个不同的函数
这幅作品:
import flask
from flask import flash, request, Flask, jsonify
import pyodbc
@app.route('/api/acrdkl/filter', methods=['GET'])
def api_filter():
dkkdcb = request.args.get('dkkdcb')
dkblrg = request.args.get('dkblrg')
dkthrg = request.args.get('dkthrg')
query = """select trim(dkkdcb), trim(dkkdps), trim(dkcob), trim(dkureg), trim(dkbktg), trim(dkblrg), trim(dkthrg)
from simdta.ACRDKL WHERE dkkdcb = param_dkkdcb and dkblrg = param_dkblrg and dkthrg = param_dkthrg"""
print("Dkkdcb ", dkkdcb)
print("Dkblrg ", dkblrg)
print("Dkthrg ", dkthrg)
query = query.replace("param_dkkdcb", dkkdcb)
query = query.replace("param_dkblrg", dkblrg)
query = query.replace("param_dkthrg", dkthrg)
print("Query 1 ", query)
conn = pyodbc.connect("DSN=AS400;UID=.....;PWD=....")
cur = conn.cursor()
cur.execute(query)
rows = cur.fetchall()
results = []
for dt in rows:
print("DT ", dt)
print("dkkdcb: ", dt[0])
print("dkkdps: ", dt[1])
print("dkcob: ", dt[2])
print("dkureg: ", dt[3])
print("dkbktg: ", dt[4])
print("dkblrg: ", dt[5])
print("dkthrg: ", dt[6])
print("\n")
results.append([x for x in dt])
return jsonify(results)
但是当我尝试使用try-except
时:
@app.route('/api/acrdkl/filter2', methods=['GET'])
def filter2():
try:
cnxn = pyodbc.connect("DSN=AS400;UID=....;PWD=....")
cursor = cnxn.cursor()
sql= """select
trim(dkkdcb), trim(dkkdps), trim(dkcob), trim(dkureg), trim(dkbktg), trim(dkblrg), trim(dkthrg)
from simdta.ACRDKL where dkkdcb=? and dkblrg=? and dkthrg=?"""
data=(int(ardkkdcb), month, year)
cursor.execute(sql, 1402, 10, 2020)
rows = cursor.fetchall()
result = []
for dt in rows:
print("dkkdcb: ", dt[0])
print("dkkdps: ", dt[1])
print("dkcob: ", dt[2])
print("dkureg: ", dt[3])
print("dkbktg: ", dt[4])
print("dkblrg: ", dt[5])
print("dkthrg: ", dt[6])
print("\n")
result.append([x for x in dt])
return json.dumps(result)
except Exception as e:
return(str(e))
它给了我这个错误:
('22023', '[22023] [Microsoft][ODBC DB2 Driver]Data exception - SQLSTATE 22023, SQLCODE -302. SQLSTATE: 22023, SQLCODE: -302 (-302) (SQLExecDirectW)')
我在第二个函数中遗漏了什么吗?如果有更好的解决方法,我们将不胜感激。提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐