홈>
행을 삭제 한 후 flask-sqlalchemy에서 증가 횟수를 재설정하여 다음 삽입물이 삭제 된 행의 id를 얻으려면 어떻게해야합니까? 즉 :
table users:
user_id | name |
________________
3 | mbuvi
4 | meshack
5 | You
id = 5 인 사용자를 삭제 한 경우; 사용자에 대한 다음 삽입은 id = 6이지만 id = 5를 갖기를 원합니다.
user_id | name |
________________
3 | mbuvi
4 | meshack
6 | me
이 문제를 어떻게 해결합니까?
- 답변 # 1
관련 질문
- python : SQLAlchemy가 이상한 데이터를 반환합니다.
- python : SQLModel(sqlalchemy + pydantic)과 함께 FastAPI에서 DateTimeTZRange를 사용하는 방법은 무엇입니까?
- python : sqlalchemy.exc.NoSuchModuleError:플러그인을 로드할 수 없음: sqlalchemy.dialects:postgres를 사용하여 Heroku postgres 데이터베이스에 액세스할 때
- python : pool_size가 1로 설정된 경우 왜 2개의 SQLAlchemy 연결이 있습니까?
- python : `pd.to_sql`이 던질 수 있는 모든 오류 캡처
데이터베이스가 자동 증분 ID를 추적합니다! 그래서 당신은 이런 식으로 할 수 없습니다. 질문! 정말로 이것을 원한다면, 사용할 수있는 왼쪽 ID를 계산하고 그 숫자로 채울 필요가 있습니다! 예를 들면 다음과 같습니다.
그리고 당신은 id (3)을 찾아서 id로 삽입해야합니다. 그래서 이것은 당신이 그 위치를 얻은 모든 테이블 유틸리티를 쿼리하게합니다! 왜 이렇게해야하는지 모르지만 여전히 해결책이 있습니다!
step01, 이것을하기 위해 캐시를 사용해야합니다! 여기에
+----+--------+ | id | number | +----+--------+ | 1 | 819 | | 2 | 829 | | 4 | 829 | | 5 | 829 | +----+--------+
를 사용하십시오.step02, 행을 삭제하려면 간단히
redis
를 캐시하십시오.id
로redis list
당신을위한 최고의 선택입니다! 행을 삭제하기 전에 캐시에 저장하십시오!step03, 새 행을 삽입하기 전에
Order-Set
에 ID가 있는지 확인하십시오. ! 참이면 튀어 나와redis
와 함께 삽입하십시오 당신이 튀어 나와!step04, 코드는 다음과 같아야합니다 :
def insert_one(data): r = redis.Redis() _id = r.pop('ID_DB') if _id: cursor.execute("insert into xxx(id, data)values(%s, %s)", data) else: # use default increment id cursor.execute("insert into xxx(data)values(%s)", data) def delete(data, id): # query the target which you will delete # if you delete by condtion `id` that's best r = redis.Redis() r.push('ID_DB',id) # DO the rest of you want ... # delete ....