Có thể tạo mô hình django từ cơ sở dữ liệu không?


90

Tôi đã từng lộn xộn với Django và Django ORM ở nhà, và tôi phải nói rằng, tôi cảm thấy nó là một trong những thứ tốt nhất hiện có về mặt dễ sử dụng.

Tuy nhiên, tôi đã tự hỏi nếu nó có thể sử dụng nó trong "ngược lại".

Về cơ bản những gì tôi muốn làm là tạo các mô hình Django từ một lược đồ cơ sở dữ liệu hiện có (từ một dự án không sử dụng django và đã khá cũ).

Điều này có khả thi không?

Cập nhật: cơ sở dữ liệu được đề cập là Oracle

Câu trả lời:


105

Có, sử dụng inspectdblệnh:

thanh tra

Xem xét các bảng cơ sở dữ liệu trong cơ sở dữ liệu được cài đặt DATABASE_NAME trỏ tới và xuất ra mô-đun mô hình Django (tệp models.py) thành đầu ra tiêu chuẩn.

Sử dụng điều này nếu bạn có cơ sở dữ liệu cũ mà bạn muốn sử dụng Django. Tập lệnh sẽ kiểm tra cơ sở dữ liệu và tạo một mô hình cho mỗi bảng bên trong nó.

Như bạn có thể mong đợi, các mô hình đã tạo sẽ có một thuộc tính cho mọi trường trong bảng. Lưu ý rằng checksdb có một số trường hợp đặc biệt trong đầu ra tên trường của nó:

[...]


1
Đọc qua thông tin đó, nó nói rằng nó được hỗ trợ cho mysql, sqlite và postgresql. Đáng buồn thay, cơ sở dữ liệu tôi đang cố gắng sử dụng là Oracle :(
TM.

oof, tôi không tin Django đã hỗ trợ tốt cho Oracle vào lúc này, cả hai về phía trước hay phía sau: /
AlbertoPL

3
Django có gần như tất cả các tính năng mà người ta có thể nghĩ ra. Nó vẫn làm tôi ngạc nhiên ngay cả sau nhiều năm sử dụng.
Ly hôn

Tôi không chắc chắn nhưng ... có lẽ bạn nên chỉ ra rằng liên kết đề cập đến devphiên bản (với hơn nhấn mạnh ?? có lẽ không ..)
Federico Gallo

có thể sử dụng cùng một lệnh khi bảng mới được chèn không
selvakumar

33

(Django 1.7.1) Chỉ cần chạy python manage.py inspectdbsẽ tạo các lớp cho tất cả các bảng trong cơ sở dữ liệu và hiển thị trên bảng điều khiển.

 $ python manage.py inspectdb

Lưu tệp này dưới dạng tệp bằng cách sử dụng chuyển hướng đầu ra Unix tiêu chuẩn:

 $ python manage.py inspectdb > models.py

(Điều này phù hợp với tôi với mysql và django 1.9)


10

Tôi đã tạo một ứng dụng có thể tái sử dụng dựa trên tiện ích lệnh kiểm tra của django, Django Kiểm tradb Refactor .

Điều này chia mô hình thành các tệp khác nhau bên trong thư mục mô hình từ cơ sở dữ liệu hiện có. Điều này giúp quản lý các mô hình khi chúng có số lượng lớn.

Bạn có thể cài đặt nó qua pip:

pip install django-inspectdb-refactor

Sau đó, đăng ký ứng dụng trong settings.py với tư cách inspectdb_refactor

Sau đó, bạn có thể sử dụng nó từ dòng lệnh như:

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

Thao tác này sẽ tạo thành công thư mục mô hình với tất cả các bảng dưới dạng tệp mô hình khác nhau bên trong ứng dụng của bạn. Ví dụ:

cấu trúc điển hình

Thông tin chi tiết có thể được tìm thấy tại đây.


Thêm một số mô tả khác ở đây
Mathews Sunny

python3 management.py verifydb_refactor --database = xmldb --app = django_sb_admin Lỗi: Lệnh không xác định: 'verifydb_refactor' Nhập 'management.py trợ giúp' để sử dụng.
ali reza

bạn đã đăng ký ứng dụng này trong settings.py của mình với tư cách là checksdb_refactor chưa?
not2acoder

Tôi nhận được lỗi này get_meta() missing 1 required positional argument: 'is_partition'. Sử dụng django 2.0
LTroya
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.