Вывести сообщение об ошибке при выполнении запроса
import pymysql, pymysql.cursors
class DB:
def __init__(self):
try:
self.conn = pymysql.connect(host='localhost', user='zuldek', passwd='123Hk78', db='YouBlogs',
charset='utf8', cursorclass=pymysql.cursors.DictCursor)
self.cursor = self.conn.cursor()
except mysql.connector.Error as err:
print("Error code:" + str(err.errno)) # error number
print("SQLSTATE value:" + str(err.sqlstate)) # SQLSTATE value
print("Error message:" + str(err.msg)) # error message
print("Error:" + str(err)) # errno, sqlstate, msg values
def query(self, ql):
self.cursor.execute(ql)
return self.cursor.fetchall()
def super_query(self, ql):
self.cursor.execute(ql)
return self.cursor.fetchone()
def update(self, ql):
self.cursor.execute(ql)
self.conn.commit()
def close(self):
self.conn.close()
SQL = DB()
lis = SQL.query("SELECT * FROM sss")
Как верно прописать 'try', так чтобы выводил ошибку при выполнении запроса(если ошибка в запросе), либо при подключении. В целом ловить любую ошибку, чтобы в дальнейшем записать ее в файл
Ответы (1 шт):
Если такого рода ошибка случилась, ваша программа вряд ли что-то сможет сделать дальше, только вывести ошибку и выйти, так что ловить исключение в метод не особо имеет смысл. Нужно обрабатывать ошибку на самом верху.
Можно все поместить в отдельную функцию и ее вызов main в try...except. Причем можно добавлять несколько блоков except для разных исключений, чтоб можно было выводить специфическую информацию для конкретного типа. А самый последний блок except имеет смысл сделать общим, т.е. чтоб он отлавливал все исключения.
import pymysql, pymysql.cursors
class DB:
# в методах никаких исключений не обрабатываем
# для примера
def __init__(self):
self.conn = pymysql.connect(host='localhost', user='zuldek', passwd='123Hk78', db='YouBlogs',
charset='utf8', cursorclass=pymysql.cursors.DictCursor)
self.cursor = self.conn.cursor()
... другие методы
def main():
SQL = DB()
lis = SQL.query("SELECT * FROM sss")
if __name__ == '__main__':
try:
main()
except mysql.connector.Error as err: # обработка исключений при работе с БД
print("Error code:" + str(err.errno)) # error number
print("SQLSTATE value:" + str(err.sqlstate)) # SQLSTATE value
print("Error message:" + str(err.msg)) # error message
print("Error:" + str(err)) # errno, sqlstate, msg values
except Exception as e: # это отловит все остальные исключения
print("Error : + str(e))