programing

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

newstyles 2023. 4. 4. 21:09

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

집에서 장고와 장고 ORM을 만지작거리고 있는데, 사용 편의성 면에서는 최고라고 생각합니다.

다만, 「리버스」에 사용할 수 있을까 생각하고 있었습니다.

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

이게 가능합니까?

업데이트: 해당 데이터베이스는 Oracle입니다.

네, 를 사용합니다.inspectdb명령어:

인스펙션db

DATABASE_NAME 설정으로 지정된 데이터베이스 테이블을 검사하고 Django 모델 모듈(models.py 파일)을 표준 출력으로 출력합니다.

Django를 사용할 레거시 데이터베이스가 있는 경우 이 옵션을 사용하십시오.스크립트는 데이터베이스를 검사하고 데이터베이스 내의 각 테이블에 대한 모델을 만듭니다.

예상대로 작성된 모델은 테이블의 모든 필드에 대한 속성을 가집니다.inspectdb의 필드명 출력에는 다음과 같은 특수한 케이스가 포함되어 있습니다.

[...]

(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