Python 如何确定对象是否是SQLAlchemy映射的对象?

Python 如何确定对象是否是SQLAlchemy映射的对象?,python,sqlalchemy,Python,Sqlalchemy,如何确定对象是否为SQLAlchemy映射的对象? 这意味着如果它是从sqlalchemy.ext.declarative.declarative_base()派生的。 使用isinstance()在我的测试中不起作用 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sqlalchemy import sqlalchemy.ext.declarative Base = sqlalchemy.ext.declarative.decla

如何确定对象是否为SQLAlchemy映射的对象? 这意味着如果它是从
sqlalchemy.ext.declarative.declarative_base()
派生的。 使用
isinstance()
在我的测试中不起作用

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sqlalchemy
import sqlalchemy.ext.declarative

Base = sqlalchemy.ext.declarative.declarative_base()

class Model(Base):
    __tablename__ = 'Table'
    _oid = sqlalchemy.Column('oid', sqlalchemy.Integer, primary_key=True)


model = Model()

# of course this is False
print ( Base == sqlalchemy.ext.declarative.declarative_base() )

# this can not work even
print( isinstance( model,
                   sqlalchemy.ext.declarative.declarative_base() ) )

# but 'Base' is unknown at this point
# I need a generalized way to find out if a given instance is mapped
# by SQLAlchemy
当它不是sqlalchemy对象时,这将引发一个
sqlalchemy.exc.NoInspectionAvailable


有关详细信息,请参见。

type(type(model))==type(sqlalchemy.ext.declarative.declarative_base())
也起到了作用。但是我不确定这是否优雅。但是我认为你在这里的评论实际上比你给出的答案更好。你应该把这条评论作为自己的答案发表。我的评论看起来很脏,很难阅读。我的回答提出了一个很好的例外,那就是蟒蛇式的方式。当你认为我的评论更好时,请解释原因。
insp = sqlalchemy.inspection.inspect(model)