python - 使用 pyodbc 从 DB2 检索数据
问题描述
我正在尝试使用 pyodbc 从 DB2 检索数据并使用 Python 以 JSON 格式打印它。我有 2 种不同的功能。
这个作品:
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)')
我在第二个功能中遗漏了什么吗?如果有更好的解决方法将不胜感激。提前致谢。
解决方案
推荐阅读
- android - 如何在 Kotlin 中使用按钮更改 Imageview 的位置
- python - 尽管生成了正确的 Outlook 日历项目 URL,但仍重定向到 Outlook 日历
- python - 将df导出到Excel时如何在pandas中的df末尾添加文本
- excel - 如何从 txt 文件中导入标题?
- python - Python多条件Countifs与条件逐行
- r - 使用 R 进行网页抓取:gz/csv 文件
- excel - 加快每个循环的复制粘贴值
- python - 拆分管道分隔的系列,按单独的系列分组,并在新列中返回每个拆分值的计数
- android - 如果 Recyclerview 正在显示怎么办,然后再次隐藏项目
- flask - 烧瓶实时消息的设计问题