필자는 사용자가 확실하게 알 수있는 정보를 제공하지 않았기 때문에 사지를 사용해야 하겠지만 센서 선언에 자동 증가가 사용된다고 생각합니다. 그렇다면 손을 완전히 설정하기 전에 설정하십시오.
sensor = Table('sensor', metadata,
Column('id', Integer, primary_key = True),
MySQL
에는 기본 키가 자동 증가로 미리 패키지되어 있습니다.
대부분의 데이터베이스 (MySQL
포함)의 경우 데이터베이스에 ID 14가 존재했다면 자동 증가로 인해 생성 단계에서 해당 번호가 다시 사용될 수 없습니다. ID가 14 인 행을 삭제 한 경우에도 마찬가지입니다.
사실을 확인한 후 해당 ID가 시스템에없는 경우 다른 행을 업데이트 할 수 있습니다.
s = new Sensor()
s.id = 14
s.name = 'my sensor'
db.session.add(s)
db.session.commit()
saved_instance = Sensor.query.get(14)
print(saved_instance is not None) # Should fail.
print(s.id) # will return the ID that was actually inserted.
s.update().\
where(users.c.id==s.id).\
values(id=14)
커밋 직후에 s.id가 무엇인지 확인할 수 있습니까? 당신의 테이블에 ID를 설정하고 그것이 이미 설정되어 있는지 확인하지 않는 트리거가있을 수 있습니까? – Werner
어떤 백엔드를 사용하고 있습니까? 에코 된 SQL의 모습은 어떻습니까? – ACV
게시물을 '센서'클래스의 선언으로 업데이트하십시오. 'sqlite'를 백엔드로 사용할 때이 동작이 일어 났는지 확인할 수 있습니까? 쉬운 테스트 ->'엔진 = create_engine ('sqlite : //')' – Jason