gpt4 book ai didi

sqlalchemy - 检查对象是否是 sqlalchemy 模型实例

转载 作者:行者123 更新时间:2023-12-04 12:24:13 27 4
gpt4 key购买 nike

给定一个对象,我想知道如何知道它是否是 sqlalchemy 映射模型的实例。

通常,我会使用 isinstance(obj, DeclarativeBase)。但是,在这种情况下,我没有可用的 DeclarativeBase 类(因为它位于依赖项项目中)。

我想知道在这种情况下最佳做法是什么。

class Person(DeclarativeBase):
__tablename__ = "Persons"

p = Person()

print isinstance(p, DeclarativeBase)
#prints True

#However in my scenario, I do not have the DeclarativeBase available
#since the DeclarativeBase will be constructed in the depending web app
#while my code will act as a library that will be imported into the web app
#what are my alternatives?

最佳答案

您可以使用class_mapper()并捕获异常。
或者您可以使用 _is_mapped_class ,但理想情况下您不应该这样做,因为它不是公共(public)方法。

from sqlalchemy.orm.util import class_mapper
def _is_sa_mapped(cls):
try:
class_mapper(cls)
return True
except:
return False
print _is_sa_mapped(MyClass)

# @note: use this at your own risk as might be removed/renamed in the future
from sqlalchemy.orm.util import _is_mapped_class
print bool(_is_mapped_class(MyClass))

关于sqlalchemy - 检查对象是否是 sqlalchemy 模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658251/

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