I was working through a book example on catching exceptions in SQLAlchemy Core using a try/except block:
from sqlalchemy.exc import IntegrityError
ins = insert(users).values(
username="cookiemon", #This username is already in db,
email_address="[email protected]", should throw an IntegrityError
phone="111-111-1111", for violating unique constraint
password="password"
)
try:
result=connection.execute(ins)
except IntegrityError as error:
print(error.orig.message, error.params)
However, I get the following error message:
AttributeError: 'IntegrityError' object has no attribute 'message'
This is verbatim from the book example, why can't I display the error message?
In Python3, exceptions no longer have the message attribute, they have args. See python.org/dev/peps/pep-0352/#transition-plan
Credit Ilja Everilä in this comment.
def __str__(self):
return str(self.args[0]
if len(self.args) <= 1
else self.args)
Then, replace:
print(error.orig.message, error.params)
with:
print(error)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With