[PYTHON] Django AutoFields를 더 높은 수로 시작하는 방법
PYTHONDjango AutoFields를 더 높은 수로 시작하는 방법
Django App의 경우 AutoField를 1 이외의 숫자로 시작하고 싶습니다.이 작업을 수행하는 분명한 방법이없는 것 같습니다. 어떤 아이디어?
해결법
-
==============================
1.다른 사람들이 말했듯이, 이것은 장고 측보다 데이터베이스 측에서 훨씬 더 쉬울 것입니다.
다른 사람들이 말했듯이, 이것은 장고 측보다 데이터베이스 측에서 훨씬 더 쉬울 것입니다.
Postgres의 경우 다음과 같을 것입니다 : ALTER SEQUENCE sequence_name 12345; 자신의 DB 엔진의 문서를보고 거기에서 어떻게 할 것인가.
-
==============================
2.MySQL의 경우 syncdb 이후에이 작업을 수행하는 신호를 만들었습니다.
MySQL의 경우 syncdb 이후에이 작업을 수행하는 신호를 만들었습니다.
from django.db.models.signals import post_syncdb from project.app import models as app_models def auto_increment_start(sender, **kwargs): from django.db import connection, transaction cursor = connection.cursor() cursor = cursor.execute(""" ALTER table app_table AUTO_INCREMENT=2000 """) transaction.commit_unless_managed() post_syncdb.connect(auto_increment_start, sender=app_models)
syncdb 후에 alter table 문이 실행됩니다. 이렇게하면 mysql에 로그인하여 수동으로 발행하지 않아도됩니다.
편집 : 이것은 오래된 스레드인지,하지만 누군가가 도움이 될 줄 알았는데.
-
==============================
3.여기 내가 한 일이 ..
여기 내가 한 일이 ..
def update_auto_increment(value=5000, app_label="remrate_data"): """Update our increments""" from django.db import connection, transaction, router models = [m for m in get_models() if m._meta.app_label == app_label] cursor = connection.cursor() for model in models: _router = settings.DATABASES[router.db_for_write(model)]['NAME'] alter_str = "ALTER table {}.{} AUTO_INCREMENT={}".format( _router, model._meta.db_table, value) cursor.execute(alter_str) transaction.commit_unless_managed()
-
==============================
4.자동 필드는 사용되는 데이터베이스 드라이버에 따라 어느 정도 좌우됩니다.
자동 필드는 사용되는 데이터베이스 드라이버에 따라 어느 정도 좌우됩니다.
특정 데이터베이스에 대해 실제로 생성 된 개체를보고 무슨 일이 일어나는지 확인해야합니다.
-
==============================
5.근원에 빠른 엿봄은 이것을위한 아무 선택권도 않는 것을 보인다, 아마 항상 1에 의하여 증가하지 않기 때문에; 다음 사용 가능한 키를 선택합니다 : "사용 가능한 ID에 따라 자동으로 증가하는 IntegerField"- djangoproject.com
근원에 빠른 엿봄은 이것을위한 아무 선택권도 않는 것을 보인다, 아마 항상 1에 의하여 증가하지 않기 때문에; 다음 사용 가능한 키를 선택합니다 : "사용 가능한 ID에 따라 자동으로 증가하는 IntegerField"- djangoproject.com
-
==============================
6.비슷한 것을 할 필요가있었습니다. 나는 복잡한 것들을 피하고 단순히 두 개의 필드를 만들었습니다 :
비슷한 것을 할 필요가있었습니다. 나는 복잡한 것들을 피하고 단순히 두 개의 필드를 만들었습니다 :
id_no = models.AutoField(unique=True) my_highvalue_id = models.IntegerField(null=True)
views.py에서 id_no에 고정 숫자를 추가하기 만하면됩니다.
my_highvalue_id = id_no + 1200
문제를 해결하는 데 도움이되는지 확신 할 수 없지만 쉽게 둘러 볼 수 있다고 생각합니다.
from https://stackoverflow.com/questions/117800/how-to-get-django-autofields-to-start-at-a-higher-number by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] `pandas.get_dummies`에서 새로운 데이터로 변환하는 쉬운 방법? (0) | 2018.11.09 |
---|---|
[PYTHON] Python과 minidom을 사용한 XML 구문 분석 (0) | 2018.11.09 |
[PYTHON] Python 2.7을 사용하여 matplotlib 플롯의 축에 소수점 및 과학 표기법을 표시 할 수 있습니까? (0) | 2018.11.08 |
[PYTHON] PyEphem을 사용하여 새벽과 일몰 시간 계산하기 (0) | 2018.11.08 |
[PYTHON] RegEx를 사용하여 Python에서 IP 주소 일치시키기 (0) | 2018.11.08 |