从mysql服务器提取文本错误[]

时间:2019-01-03 21:59:06

标签: python mysql pymysql

如果我在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)

但这给了我一个“字符串元组”。此模块中是否有办法仅获取错误消息本身?

2 个答案:

答案 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”附近使用