【发布时间】:2018-01-03 12:20:24
【问题描述】:
由于某些特殊原因,我们不得不在 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,我们希望看到来自 DB 的错误,或者来自 DB 的任何类型的错误。
这可能吗? tnx
【问题讨论】:
-
用您想要的垃圾句子填充您的 query_text 并执行您的代码。你会得到你发布的问题的答案。
-
这正是正在发生的事情。我们输入的任何内容都存储在 query_text 中,甚至是垃圾。除了部分运行,但我们看不到来自数据库@RavinderReddy 的消息
-
except 是保存和管理引发的异常。