由于某些特殊原因,我们不得不在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公司
2条答案
按热度按时间xesrikrc1#
如果您不确定引发的异常,可以从系统调用通用异常信息。
例子:
数据库错误也有命名异常。
可以假设和提出相关错误。
参考文件:
错误和例外
h7appiyu2#
我认为你需要检查各种例外情况。目前,您正在检查是否发生了异常,然后打印
cursor.statusmessage
. 当你传递垃圾时,cursor.statusmessage
将不包含任何内容。处理各种错误情况的好方法是检查各种数据库异常。
django中的各种数据库异常!!!
演示代码: