테이블 삭제() 후 ID 개수 재설정
-
21-12-2019 - |
문제
테스트 목적으로 코드를 실행하기 전에 모든 테이블을 삭제(삭제)합니다.
for table in reversed(db.metadata.sorted_tables):
engine.execute(table.delete())
do_stuff()
그러나 새로운 데이터의 id
값은 이전 값에서 시작됩니다. id
중단되었습니다:
첫 번째 반복:
id | value
-----+---------
1 | hi
2 | there
두 번째 반복(테이블 삭제, 새 데이터 삽입):
id | value
-----+---------
3 | good
4 | day
초기화할 수 있는 방법이 있나요? id
테이블을 삭제할 때 계산됩니까?
편집하다:내가 깨뜨린 것 같아, 이제 테이블은 전혀 치워지지 않아
config.py
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:myPassword@localhost/myDatabase'
app.py
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
models.py
from app import app, db
def clear():
for table in reversed(db.metadata.sorted_tables):
db.engine.execute('TRUNCATE TABLE ' + table.name + ' RESTART IDENTITY CASCADE')
테이블이 아직 추가 중입니다. db.session.add_all()
그리고 db.session.commit()
).하지만, clear()
아무것도 하지 않습니다.내가 로그인 할 때 postgres
사용자 terminal
직접 실행하고 TRUNCATE TABLE myTable RESTART IDENTITY CASCADE
, 효과가있다.
table.name
정확한 이름을 알려줍니다.그래서 뭔가 문제가 있다고 믿게 됐어요. db.engine.execute()
, 하지만 그 이후로는 별로 의미가 없습니다 db.session.add_all()
공장
해결책
부르다 TRUNCATE TABLE MyTable RESTART IDENTITY;
호출하는 대신 루프의 모든 테이블에 대해 table.delete()
- 자동 증가 순서를 재설정해야 합니다.
제휴하지 않습니다 StackOverflow