code

데이터베이스에서 장고 모델을 생성 할 수 있습니까?

codestyles 2020. 9. 25. 07:52
반응형

데이터베이스에서 장고 모델을 생성 할 수 있습니까?


나는 집에서 Django와 Django ORM을 엉망으로 만들고 있으며, 사용 편의성 측면에서 최고 중 하나라고 생각합니다.

그러나 "리버스"에서 사용할 수 있는지 궁금합니다.

기본적으로 내가하고 싶은 것은 기존 데이터베이스 스키마 (django를 사용하지 않고 꽤 오래된 프로젝트에서)에서 Django 모델을 생성하는 것입니다.

이게 가능해?

업데이트 : 문제 의 데이터베이스는 Oracle입니다.


예, 다음 inspectdb명령을 사용하십시오 .

inspectdb

DATABASE_NAME 설정이 가리키는 데이터베이스의 데이터베이스 테이블을 조사하고 Django 모델 모듈 (models.py 파일)을 표준 출력으로 출력합니다.

Django를 사용하려는 레거시 데이터베이스가있는 경우이를 사용하십시오. 스크립트는 데이터베이스를 검사하고 그 안에있는 각 테이블에 대한 모델을 생성합니다.

예상대로 생성 된 모델에는 테이블의 모든 필드에 대한 속성이 있습니다. inspectdb에는 field-name 출력에 몇 가지 특별한 경우가 있습니다.

[...]


(Django 1.7.1) 단순히 실행 python manage.py inspectdb하면 데이터베이스의 모든 테이블에 대한 클래스가 생성되고 콘솔에 표시됩니다.

 $ python manage.py inspectdb

표준 Unix 출력 리디렉션을 사용하여이를 파일로 저장합니다.

 $ python manage.py inspectdb > models.py

(이것은 mysql 및 django 1.9에서 나를 위해 작동합니다)


django의 inspectdb 명령 유틸리티 인 Django Inspectdb Refactor를 기반으로 재사용 가능한 앱을 만들었습니다 .

이렇게하면 기존 데이터베이스에서 모델 폴더 내의 다른 파일로 모델이 분할됩니다. 이렇게하면 모델 수가 많아 질 때 관리하는 데 도움이됩니다.

pip를 통해 설치할 수 있습니다.

pip install django-inspectdb-refactor

그런 다음 settings.py에서 앱을 다음과 같이 등록하십시오. inspectdb_refactor

그런 다음 명령 줄에서 다음과 같이 사용할 수 있습니다.

python manage.py inspectdb_refactor --database=your_dbname_defined_in_settings --app=your_app_label

그러면 앱 내에서 모든 테이블이 다른 모델 파일로 포함 된 모델 폴더가 성공적으로 생성됩니다. 예를 들면 :

전형적인 구조

자세한 내용은 여기에서 확인할 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/1179469/is-it-possible-to-generate-django-models-from-the-database

반응형