python 中的 oracle 查询 - return 类型必须是字符串、字典、元组
oracle query in python - The return type must be a string, dict, tuple
我正在尝试在 Web api 端点上显示查询的输出,但它不起作用。
下面的代码是 returning TypeError: 视图函数没有 return 有效响应。 return 类型必须是字符串、字典、元组、响应实例或可调用的 WSGI,但它是一个 int.
我已经尝试过不同的方法,但没有成功。我在这里错过了什么?
from flask import Flask, jsonify, request, render_template
from flask_cors import CORS
import cx_Oracle
import os
import json
import logging
app = Flask(__name__)
app.logger.disabled = True
log = logging.getLogger('werkzeug')
log.disabled = True
@app.route('/query')
def query1():
connection = cx_Oracle.connect(user='superuser', password='mypass1', dsn='moon.my-org.local:1521/db1_sql')
cursor = connection.cursor()
cursor.execute("""SELECT * from users""")
result = cursor.fetchone()
if result == None:
return("No results")
exit
else:
while result:
return result[0]
result = cursor.fetchone()
cursor.close()
connection.close()
port = int(os.getenv("PORT"))
app.run(host='0.0.0.0', port=port, debug=True)
如果问题只是您 return 是一个整数而不是字符串,那么使用 str()
:
将其转换为字符串是一件简单的事情
return str(result[0])
但是,您还有另一个问题 -- return 语句在循环内,这意味着只有第一个结果会被 returned,然后函数将完全退出。循环不会在第一次迭代后执行。
我正在尝试在 Web api 端点上显示查询的输出,但它不起作用。
下面的代码是 returning TypeError: 视图函数没有 return 有效响应。 return 类型必须是字符串、字典、元组、响应实例或可调用的 WSGI,但它是一个 int.
我已经尝试过不同的方法,但没有成功。我在这里错过了什么?
from flask import Flask, jsonify, request, render_template
from flask_cors import CORS
import cx_Oracle
import os
import json
import logging
app = Flask(__name__)
app.logger.disabled = True
log = logging.getLogger('werkzeug')
log.disabled = True
@app.route('/query')
def query1():
connection = cx_Oracle.connect(user='superuser', password='mypass1', dsn='moon.my-org.local:1521/db1_sql')
cursor = connection.cursor()
cursor.execute("""SELECT * from users""")
result = cursor.fetchone()
if result == None:
return("No results")
exit
else:
while result:
return result[0]
result = cursor.fetchone()
cursor.close()
connection.close()
port = int(os.getenv("PORT"))
app.run(host='0.0.0.0', port=port, debug=True)
如果问题只是您 return 是一个整数而不是字符串,那么使用 str()
:
return str(result[0])
但是,您还有另一个问题 -- return 语句在循环内,这意味着只有第一个结果会被 returned,然后函数将完全退出。循环不会在第一次迭代后执行。