由于某些特殊原因,我们必须在 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/