Python 如果我需要一个自动递增的ID,但想检查另一个字段上的重复项,我该如何定义我的模型?
我有一节这样的课。我的目标是在每次遇到重复链接时更新上次看到的日期 我已经定义了Python 如果我需要一个自动递增的ID,但想检查另一个字段上的重复项,我该如何定义我的模型?,python,mysql,sqlalchemy,Python,Mysql,Sqlalchemy,我有一节这样的课。我的目标是在每次遇到重复链接时更新上次看到的日期 我已经定义了id列,因为它将用作另一个表的外键。这是自动递增的。真正的副本是url class Link(Base): __tablename__ = 'links' id = Column(BigInteger, primary_key=True, unique=True) url = Column(String(500), nullable=False, index=True, unique=True
id
列,因为它将用作另一个表的外键。这是自动递增的。真正的副本是url
class Link(Base):
__tablename__ = 'links'
id = Column(BigInteger, primary_key=True, unique=True)
url = Column(String(500), nullable=False, index=True, unique=True)
last_seen_date = Column(DateTime, nullable=False, default=datetime.datetime.now())
我想在重复密钥更新时插入…但我不知道如何定义字段来完成此操作。按照我现在的方式,我永远不能复制,因为组合主键在ID中总是有一个自动递增的部分
我需要如何更改定义以允许重复键更新时的语句工作当url
是重复的时,我可以更改上次查看日期
ALTER TABLE `tablename` ADD UNIQUE INDEX `ttt_url` (`url`);
ttt_xxx将是我出于习惯而使用的密钥的名称。它将允许插入/复制,您可以更新日期/时间戳并保留您的原始pk如果没有已用index=True,unique=True定义的pk
?或者这有什么不同吗?我说的是在数据库级别强制执行它,并使用嵌入了重复代码的insert查询。我认为您已经得到了想要的。“允许ON DUPLICATE KEY UPDATE
语句工作当url
是重复的时,我可以更改最后一次看到的日期
”也许我对@LittleQ感到困惑,我认为它不工作,因此提出了这个问题。也许NewGuy在这里报告这是一个成功,并想与我们分享为什么不工作?在重复键更新last_seen_date=2时插入表(url,last_seen_date)值(1,2)代码>完全正确。通过在url上有一个唯一的索引,如果由mysql程序员而不是sqlalchemy包装器传递,则在重复的url上插入将起作用