python - django View 中的原始 SQL 显示错误

标签 python mysql sql django

由于某些特殊原因,我们必须在 view.py 文件中执行原始查询。 (有一些页面,用户输入 SQL 查询并将其发送,因此我们的系统和我们应该执行它并显示 tat 查询的结果)

def query(request):
    result = None
    if request.method == "POST":
        form = forms.QueryForm(request.POST)
        if form.is_valid():
            query_text = form.cleaned_data['query']
            with connection.cursor() as cursor:
                try:
                    cursor.execute(query_text)
                    result = cursor.fetchall()
                except:
                    result = cursor.statusmessage
    else:
        form = forms.QueryForm()

    return render(request, "portal/query.html", {
        'form': form,
        'result': result
    })

如果我们运行类似 SELECT * FROM table1 的内容,try 部分将成功运行,如果某些查询不返回某些行(如 UPDATE),则 except 部分将起作用。

我的问题是,如果我们执行一些无意义的查询,例如sakufhskghks,我们希望看到来自数据库的错误,或来自数据库的任何类型的错误。

这可能吗? tnx

最佳答案

如果您不确定引发的异常,您可以从系统调用通用异常信息。

示例:

import sys
....
try:
    # whatever code you want ...
    pass
except OSError as err: # when you know and expect specific error
    # decide what you want to perform
    pass
except ValueError: # when you know and expect specific error
    # decide what you want to perform
    pass
except: # unhandled exceptions
    print("Unexpected error:", sys.exc_info()[0])
    raise

数据库错误也有命名异常。
可以假定并提出相关错误。

引用文档:

关于python - django View 中的原始 SQL 显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48077287/

相关文章:

mysql - Flask-SQLAlchemy:仅查询某些列,将一对多关系作为列表返回

c# - SQL 查询错误

Mysql 帮助更新具有相同值的行

mysql - Laravel5 获取 1000 行后的所有结果

python - 修复 OpenCV Python 流摄取

Python,将字典添加到JSON文件

mysql - 如何按层次选择所有 parent ?

mysql - JOIN 返回表中的所有数据

python - 如何在 Redhat linux 7 中使用 python 2.7.5 安装 Tkinter 模块?

python - 与 web.py 匹配的 URL