0
私は継承モデルとsqlAlchemy、flaskとflask_sqlalchemyを処理しようとしています。Flask SqlAlchemy:sqlalchemy.orm.exc.UnmappedInstanceError:クラス 'ApiAgent'がマップされていません
次のコードが動作している場合は、インライン:
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}
populate.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()
しかし、私は2つのファイルに分割する場合には機能しdoesntの:
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}
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}
私は以下のようなメッセージだ
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()
populate.py:
sqlalchemy.orm.exc.UnmappedInstanceError: Class 'app.models.agent.api_agent.ApiAgent' is not mapped
私は、SQL錬金術を壊しましたか? (私はsqliteを使用しています)
コードを正しくコピーしていないと思います。 'WFAgent'が定義されていないので、' api_agent.py'に 'NameError'があるはずです。 – univerio
そうです。コードを更新します。 – Kayf