如果我在pymysql
中发出无效的sql语句,则会出现如下异常:
c.cursor.execute('select * fromd')
pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'fromd' at line 1")
我如何在回复中出现文字错误?
“您的SQL语法有误;请在与MySQL服务器版本相对应的手册中找到在第1行的'fromd'附近使用正确的语法”
当前我正在做的是
try:
c.cursor.execute('asdf')
except Exception as e:
print (e)
但这给了我一个“字符串元组”。此模块中是否有办法仅获取错误消息本身?
答案 0 :(得分:1)
您应该捕获特定的错误:
import pymysql
try:
raise pymysql.err.ProgrammingError(1064,"Bla")
except pymysql.err.ProgrammingError as prgError:
if len(prgError.args)>1:
print(prgError.args[1]) # might be not code + message but code only
else:
print(e)
except Exception as e:
print (e)
输出:
Bla
答案 1 :(得分:0)
您可以使用e.args
:
try:
self.cursor.execute(query)
except pymysql.err.ProgrammingError as e:
error_msg = e.args[1]
raise ConnectionError(error_msg)
您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ asdf”附近使用