gpt4 book ai didi

python - 如何独立于使用的数据库/引擎捕获错误 1062 "duplicate entry"?

转载 作者:太空狗 更新时间:2023-10-29 20:22:00 24 4
gpt4 key购买 nike

在一个项目中,我开始使用 MySQL 作为数据库。我没有首先检查,而是执行插入,如果我收到代码为 1062 的 IntegrityError 异常,我知道存在重复条目并警告用户执行此操作。

基本上是这样的:

try:
# add duplicate, nothing bad happens yet, is only in sqla session
db.session.add(User(email='already_used_email@address_that_has_to_be_unique.com'))
# commit, now the IntegrityError is raised, when sqla inserts
db.session.commit()
except IntegrityError as e:
db.session.rollback()
# this is what i do with mysql, check the exception for code 1062
# how can i replace this with something db independent?
code, msg = e.orig
if code == 1062:
# send warning
pass

现在,一方面,这使得用 eg 进行测试已经不可能了。内存中的sqlite。不太好,但我可以接受。

但是,其次,我可能(不得不/想要针对其他超出此问题范围的问题)切换到 Postgres。当然,我可以只更改代码以(也)检查 Postgres 错误代码,但我希望有一种方法可以让 SQLALchemy 告诉我,重复发生独立于数据库。数据库方言抽象...?

最佳答案

您要搜索的是称为“SQLSTATE”的东西 - 一组涵盖最常见 RDBMS 错误状态的标准错误代码。不过,它们不一定为所有目的提供足够的详细信息,而且我不知道 sqlite 是否支持它们。

关于python - 如何独立于使用的数据库/引擎捕获错误 1062 "duplicate entry"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8072537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com