【发布时间】:2019-12-06 10:06:30
【问题描述】:
我在 SQLAlchemy 中有以下一对多的关系。
class Application(Base):
__tablename__ = "application"
id = Column("id", Integer, primary_key = True, autoincrement = True)
organization_id = Column(Integer, ForeignKey('organization.id'))
organization = relationship("Organization", uselist=False, back_populates="applications")
和
class Organization(Base):
__tablename__ = "organization"
id = Column("id", Integer, primary_key = True, autoincrement = True)
name = Column("name", String(128), unique = True, nullable = False)
applications = relationship("Application", back_populates="organization")
简单地说,“一个组织可以有多个应用程序,一个应用程序可以有一个组织”。
我推断的方式是Organization 类是父类,Application 类是子类。
我有一个包含 应用程序 列表的 .csv 文件。我正在解析列表以从每一行创建Application 和Organization 的实例。然后我设置application.organization = organization,然后设置session.add(application)。
当我将应用程序添加到数据库时,如果依次添加的组织是第一次添加的,则它已正确插入。但是,当发现一个应用程序与插入的应用程序具有相同的组织时,它会抱怨错误 -
sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1062, "键 'name' 的重复条目 'MICROSOFT'")
我了解这是因为该组织已存在于数据库中。
SQLAlchemy 不会处理这种情况吗?如果没有,我该如何处理?
【问题讨论】:
标签: python python-3.x flask sqlalchemy flask-sqlalchemy