AttributeError:“ IntegrityError”对象没有属性“ message” SQLAlchemy

kfo*_*olw 6 python error-handling sqlalchemy

我正在研究一个有关使用try / except块在SQLAlchemy Core中捕获异常的书籍示例:

from sqlalchemy.exc import IntegrityError
ins = insert(users).values(
    username="cookiemon",            #This username is already in db, 
    email_address="damon@cookie.com", 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)
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息:

AttributeError:“ IntegrityError”对象没有属性“ message”

这是本书示例的逐字记录,为什么我不能显示错误消息?

sna*_*erb 5

在Python3中,异常不再具有message属性,它们具有args。请参阅 python.org/dev/peps/pep-0352/#transition-plan

\n
\n

此评论中注明 Ilja Everil\xc3\xa4

\n


Mah*_*gdy -1

这不是 error.orig.message 让它

print(error.message)
Run Code Online (Sandbox Code Playgroud)

将返回这个

(sqlite3.IntegrityError) NOT NULL 约束失败:users.gender