将模型对象添加到会话时,是否可以为INSERT子句设置前缀(即IGNORE)?

时间:2018-10-28 12:41:41

标签: python sqlalchemy

我想在使用sqlalchemy方面获得帮助。

我有一个带有主键和复合唯一约束的模型类,

class Article(Base):
    """maps `article` table."""

    __tablename__ = "article"
    __table_args__ = (
        sqla.UniqueConstraint(
            'source', 'sourceId', name='sourceIdUniqueConstraint'),
        Base.__table_args__)
    ... ...
    ... ...
    ... ...

    source = sqla.Column("source", sqla.Enum(ArticleSource))
    sourceId = sqla.Column("sourceId", sqla.String(255))

我将在每个特定的间隔运行刮板批处理脚本,并且插入逻辑将具有在先前的运行中已经插入到我的MySQL数据库中的重复项。

 self.session.add(article.data)

因此,我想用INSERT IGNORE插入文档,因为我的目标是避免在session.commit期间出现重复输入错误。

本文模型实例是基于sqlalchemy-marshmallow Schema构建的,由于我围绕模型实例构建了一些验证逻辑,因此我想避免直接使用JSON来执行查询。

如果有更好的做法来解决我的问题,请赐教。

谢谢。

0 个答案:

没有答案