Python 烧瓶SqlAlchemy:SqlAlchemy.orm.exc.unappedInstanceError:Class';ApiAgent';未映射
我尝试处理继承模型和sqlAlchemy、flask和FlaskSqlAlchemy 如果是内联的,则以下代码正常工作: wf_agent.pyPython 烧瓶SqlAlchemy:SqlAlchemy.orm.exc.unappedInstanceError:Class';ApiAgent';未映射,python,inheritance,flask,sqlalchemy,Python,Inheritance,Flask,Sqlalchemy,我尝试处理继承模型和sqlAlchemy、flask和FlaskSqlAlchemy 如果是内联的,则以下代码正常工作: wf_agent.py from app import db class WFAgent(db.Model): __tablename__ = 'wf_agent' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), index=True, uniq
from app import db
class WFAgent(db.Model):
__tablename__ = 'wf_agent'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
agent_type = db.Column(db.String(50), nullable=False)
__mapper_args__ = {'polymorphic_on': agent_type,
'polymorphic_identity': 'wf_agent'}
__table_args__ = {'extend_existing': True}
class ApiAgent(WFAgent):
__tablename__ = 'wf_agent'
__mapper_args__ = {'polymorphic_identity': 'api_agent'}
api_key = db.Column(db.String(1024))
token = db.Column(db.String(1024))
__table_args__ = {'extend_existing': True}
from app import db
class WFAgent(db.Model):
__tablename__ = 'wf_agent'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
agent_type = db.Column(db.String(50), nullable=False)
__mapper_args__ = {'polymorphic_on': agent_type,
'polymorphic_identity': 'wf_agent'}
__table_args__ = {'extend_existing': True}
填充.py
from app import db
from app.models.agent.wf_agent import WFAgent, ApiAgent
db.drop_all()
db.configure_mappers()
db.create_all()
db.session.commit()
api_agent = WFAgent(name="agent 1")
db.session.add(api_agent)
api_agent = ApiAgent(name="agent 2")
db.session.add(api_agent)
db.session.commit()
from app import db
from app.models.agent.wf_agent import WFAgent
from app.models.agent.api_agent import ApiAgent
db.drop_all()
db.configure_mappers()
db.create_all()
db.session.commit()
api_agent = WFAgent(name="test")
db.session.add(api_agent)
api_agent = ApiAgent(name="test")
db.session.add(api_agent)
db.session.commit()
但如果我将其拆分为两个文件,则无法正常工作:
wf_agent.py
from app import db
class WFAgent(db.Model):
__tablename__ = 'wf_agent'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
agent_type = db.Column(db.String(50), nullable=False)
__mapper_args__ = {'polymorphic_on': agent_type,
'polymorphic_identity': 'wf_agent'}
__table_args__ = {'extend_existing': True}
class ApiAgent(WFAgent):
__tablename__ = 'wf_agent'
__mapper_args__ = {'polymorphic_identity': 'api_agent'}
api_key = db.Column(db.String(1024))
token = db.Column(db.String(1024))
__table_args__ = {'extend_existing': True}
from app import db
class WFAgent(db.Model):
__tablename__ = 'wf_agent'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), index=True, unique=True)
agent_type = db.Column(db.String(50), nullable=False)
__mapper_args__ = {'polymorphic_on': agent_type,
'polymorphic_identity': 'wf_agent'}
__table_args__ = {'extend_existing': True}
api_agent.py
from app import db
from agent.wf_agent import WFAgent
class ApiAgent(WFAgent):
__tablename__ = 'wf_agent'
__mapper_args__ = {'polymorphic_identity': 'api_agent'}
api_key = db.Column(db.String(1024))
token = db.Column(db.String(1024))
__table_args__ = {'extend_existing': True}
填充.py
from app import db
from app.models.agent.wf_agent import WFAgent, ApiAgent
db.drop_all()
db.configure_mappers()
db.create_all()
db.session.commit()
api_agent = WFAgent(name="agent 1")
db.session.add(api_agent)
api_agent = ApiAgent(name="agent 2")
db.session.add(api_agent)
db.session.commit()
from app import db
from app.models.agent.wf_agent import WFAgent
from app.models.agent.api_agent import ApiAgent
db.drop_all()
db.configure_mappers()
db.create_all()
db.session.commit()
api_agent = WFAgent(name="test")
db.session.add(api_agent)
api_agent = ApiAgent(name="test")
db.session.add(api_agent)
db.session.commit()
我得到了以下信息:
sqlalchemy.orm.exc.UnmappedInstanceError: Class 'app.models.agent.api_agent.ApiAgent' is not mapped
我打破了Sql炼金术了吗?(我正在使用sqlite)明白了!感谢Univerio,我检查了我的进口 这不管用
from agent.wf_agent import WFAgent
但是
没关系
不知道为什么。。。我需要更好地理解导入的工作原理:)明白了!感谢Univerio,我检查了我的进口 这不管用
from agent.wf_agent import WFAgent
但是
没关系
不知道为什么。。。我需要更好地理解导入的工作原理:)我认为您复制的代码不正确。您应该在
api_agent.py
中得到namererror
,因为未定义WFAgent
。您是对的。我更新了我的代码。我认为你没有正确复制代码。您应该在api_agent.py
中得到namererror
,因为未定义WFAgent
。您是对的。我更新了我的代码。这很简单,因为模型在同一个目录中。如果模型在其他地方,您需要放置完整的虚线路径,该怎么办?这很简单,因为模型位于同一目录中。如果模型在其他地方,您需要放置完整的虚线路径,该怎么办?