0
私は、乗客予測モデルのためのジオオブジェクト階層を構築するのに苦労します。flask-sqlalchemyのオブジェクト間の関係を作成する際のIntegrityError
私は、オブジェクトの次の階層があります。この問題を解決する方法を、
IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: geoobjects.id
[SQL: 'UPDATE geoobjects SET id=? WHERE geoobjects.id = ?'] [parameters: (2, 1)]
任意の提案:私はセッションにTransportAreaオブジェクトを追加しようとすると
class Geoobject(m.db.Model):
__tablename__ = 'geoobjects'
id = m.db.Column(m.db.Integer, primary_key=True)
name = m.db.Column(m.db.String)
def __init__(self, code: int, name: str):
self.code = code
self.name = name
class Region(Geoobject):
__tablename__ = 'regions'
id = m.db.Column(m.db.Integer, m.db.ForeignKey('geoobjects.id'),
primary_key=True)
code = m.db.Column(m.db.Integer)
def __init__(self, name: str, code: int):
self.name = name
self.code = code
self.region_id = self.id
class TransportArea(Geoobject):
__tablename__ = 'transport_areas'
id = m.db.Column(m.db.Integer, m.db.ForeignKey('geoobjects.id'),
primary_key=True, autoincrement=True)
region = m.db.relationship('Region',
foreign_keys='Region.id', uselist=False)
def __init__(self,
name: str,
region: Iterable[Region]):
self.name = name
self.region = region
は、私は次のエラーを取得しますか?
m
- dbを含むフラスコアプリを含むモデルのインスタンスです。
SQLを見ると、値 '2'のキーが既に存在しているようです。ですから、id = 2のid = 1を設定しようとすると、ユニークな制約の失敗が発生します。 – sisanared
実際、 'id = 1'(クラス' Region')の 'm.db'にはオブジェクトが1つしかありません。そして、 'm.db.session.add()'オペレーション[エラーが発生する場所]は、id = 2を持つべき新しいオブジェクトTransportationAreaを追加します。私が理解できないのは、このアクションがid = 1を値2で更新しようとしている理由です。 –
'TransportArea'オブジェクトをどのようにセッションに追加するのかコードを共有できますか? – van