我的表:
class api(Base):
__tablename__ = "api"
id = Column(Integer, primary_key=True)
date = Column(DateTime, nullable=False)
gender = Column(String)
age = Column(String)
value = Column(Integer)
Base.metadata.drop_all(engine)
Base.metadata.create_all(engine)
当我发送一个api查询时,日期与之前的查询重叠,会创建重复的行。我怎么能避免这种情况?我可以删除重复项,但有没有更有效的方法来避免首先插入它们?
答案 0 :(得分:0)
您可以创建一个database constraint,禁止重复输入并处理代码中的错误。
答案 1 :(得分:0)
看起来您正在使用SQLAlchemy
ORM。您可以add unique=True
to a single column在表格上创建约束。例如:
class API(Base):
...
date = Column(DateTime, nullable=False, unique=True)
您还可以在多个列by passing UniqueConstraint
to __table_args__
.上创建唯一约束。例如:
class API(Base):
__table_args__ = (
UniqueConstraint('date', 'gender'),
)
在将新记录插入数据库之前,仍建议您检查是否存在,因为通常会在数据库日志文件中记录违反数据库约束的行为。