Vì vậy, nó khá dễ bị nhầm lẫn khi
bạn lần đầu tiên nhìn vào mô hình dữ liệu,
di chuyển và cơ sở dữ liệu chính nó.
Và vì vậy tôi muốn trải qua điều này một chút chi tiết hơn.
Vì vậy, makemigrations là những gì đọc các
tập tin models.py và sau đó
nó tạo ra những gì được gọi là di chuyển.
Và điều quan trọng là điều này được hướng dẫn bởi
danh sách các ứng dụng trong settings.py.
Vì vậy, nếu bạn tạo ra một điều mới và tạo ra một ứng dụng mới,
và bạn chỉnh sửa các tập tin mô hình và bạn cố gắng chạy
một makemigrations và nó không thấy
bất cứ điều gì giống như, nó chỉ làm gì?
Vâng, bạn đã chỉnh sửa settings.py của bạn? Bởi vì có
một thứ gọi là ứng dụng đã cài đặt trong settings.py của bạn.
Bây giờ, di chuyển được di chuyển trên cơ sở dữ liệu.
Điều này có nghĩa rằng việc di chuyển
là một mô tả hợp lý về những gì các bảng
nên trông như thế nào và chúng là một sự tiến hóa.
Những gì họ có nghĩa là giống như phiên bản đầu tiên
của bảng này, từ
models.py đầu tiên khi di chuyển được chạy lần đầu tiên, là 001.
Và sau đó nếu bạn thay đổi models.py
và bạn chạy một lần nữa,
nó sẽ xem xét các thay đổi từ
việc di chuyển 001 sang models.py và sau đó 002,
và sau đó 002 không giống như xóa sạch tất cả và bắt đầu lại,
nó giống như, “Ồ, chờ đã, bạn vừa thêm một cột.
Tôi sẽ tiếp tục và thêm cột đó.” Nhưng nó
không được thực hiện theo cách đó là SQL thực tế.
Vì vậy, di chuyển là
loại giống như Python và chúng di động trên cơ sở dữ liệu,
có nghĩa là bạn có thể trên
máy tính của bạn sử dụng SQLite, và trong sản xuất
, bạn có thể sử dụng MySQL, và
di chuyển là như nhau cho
cả hai người bởi vì họ chỉ nói,
“Đây là cột, đây là các loại,
đây là những gì chúng được cho là.”
Bây giờ, tương phản với lệnh di chuyển.
Lệnh di chuyển đọc
tất cả các di chuyển và
sau đó biết cơ sở dữ liệu nào nó đang nói chuyện
và chạy các lệnh SQL để tạo ra
các bảng cần thiết và/hoặc phát triển các bảng cần thiết.
Nó trông và nói ồ, đây là lần di cư
đầu tiên, đây là lần di cư thứ hai,
đây là lần di cư thứ ba. Tôi sẽ làm cho bảng,
tôi sẽ thay đổi bảng, tôi sẽ thay đổi bảng,
tôi sẽ thay đổi bảng, và ở phần
cuối của tất cả các di chuyển, di
chuyển sau đó đi qua
tất cả các di chuyển và sau đó có
một bảng cơ sở dữ liệu phản ánh
tổng số di chuyển,
mà cũng phản ánh tập tin models.py mới nhất.
Vì vậy, nó hơi phức tạp.
Nó có liên quan đến tính di động của cơ sở dữ liệu
và thực tế là chúng tôi muốn tách
ra các bộ phận di động của nó
từ các bộ phận không di động đến điều này.
Vì vậy, nếu bạn nhìn vào sự thay đổi
và đây là một mẫu dj4e,
mẫu nhỏ
của tôi, có rất nhiều mô hình trong đó.
Và nếu bạn nhìn vào tất cả các models.py,
bạn thấy rằng đối với mọi ứng dụng
trong dự án dj4e mẫu,
bạn thấy một tập tin models.py và đó là một
mã Python, đó là lớp học, cuốn sách, blah, blah, blah.
Đó là rất di động và đó là cách
chúng tôi trong mã Python của chúng tôi, trong mã Django của chúng tôi,
xem mô hình cơ sở dữ liệu.
Và khi bạn chạy makemigration,
tạo ra các tập tin di chuyển và
chúng giống như autos/migrations/001_initial.py, vv
Và vì vậy bạn thấy một số trong những cái tôi có ở đây,
thực sự có hai trong số họ.
Vì vậy, nó loại thực hiện một trong những đầu tiên
và sau đó tôi phải thay đổi các tập tin mô hình,
và sau đó tôi chạy makemigrations một lần nữa và nó ghi lại
làm thế nào mô hình đó thay đổi từ
phiên bản đầu tiên của
tập tin mô hình sang phiên bản thứ hai.
Bạn có thể nhìn vào những điều này, nhưng không chỉnh sửa chúng,
bạn có thể kiểm tra chúng vào GitHub, nhưng không chỉnh sửa chúng.
Nhưng hãy nhìn xem. Chúng là một đại diện rất di động.
Họ trông giống như tập tin models.py.
Bạn không được phép thay đổi chúng,
bạn phải tạo ra chúng
với sự thay đổi. Và một lần nữa,
chúng có thể đi vào GitHub.
Bây giờ, việc di chuyển về cơ bản đọc
tất cả các tập tin di chuyển và
không chỉ một, nhưng nếu
có một chuỗi các tập tin di chuyển,
nó áp dụng tất cả chúng theo thứ tự khi cần thiết.
Và nếu cơ sở dữ liệu có
di chuyển đầu tiên và thứ hai được áp dụng
nhưng không phải là di chuyển thứ ba
, nó biết rằng và nói, “Bạn biết không,
tôi sẽ chỉ tinh chỉnh cơ sở dữ liệu này
đã tồn tại, đã chạy,
và sau đó thêm một cột hoặc thay đổi
chiều rộng của một cột hoặc bất cứ
điều gì bạn đã yêu cầu được thực hiện bằng cách chỉnh sửa models.py của bạn.”
Vì vậy, khi di chuyển được thực hiện,
bạn sau đó kết thúc với một loạt các bảng
trong cơ sở dữ liệu của bạn và tất cả đều dựa trên
tên của ứng dụng và tên
của mô hình trong ứng dụng.
Và như vậy một nơi nào đó ở đây là bookone_book,
bookone_instance, và bookone_lang.
Tất cả đều ngồi đó.
Và đó là tất cả các bảng. Và chúng tôi
đã xem qua những bảng này trước đây.
Nhưng đó là di chuyển đi
từ tất cả các di chuyển nhỏ trải rộng trên tất cả các
ứng dụng trong dự án này và sau đó
đặt một cơ sở dữ liệu với nhau mà có tất cả những điều đó.
Và tôi tiếp tục nói rằng các di cư
là tất cả về sự tiến hóa,
bởi vì nếu bạn có một cái nhìn ở đây,
bạn sẽ thấy một bảng nhỏ gọi
là django_migrations và những gì Django đang làm trong
bảng django_migrations đó là ghi nhớ
những di cư đã được áp dụng cho
cơ sở dữ liệu này vì vậy khi nó đi qua các di chuyển,
nó nói, “Ồ, đây là
một trong những chưa được thực hiện trong cơ sở dữ liệu này,
vì vậy tôi phải tinh chỉnh cơ sở dữ liệu chỉ một chút.”
Vì vậy, nó nhớ lại những di chuyển đã được thực hiện.
Nó khá hấp dẫn và
trong những ứng dụng nhỏ bé này,
chúng ta không phải lúc nào cũng cần phải thông minh về điều đó.
Vì vậy, đôi khi những gì bạn muốn làm
chỉ là, “Tôi bối rối,
tôi sẽ chạy lại makemigration”,
bởi vì bạn không thực sự chạy sản xuất,
bạn chỉ thực sự làm điều đó lặp đi lặp lại, vì
vậy bạn có thể chạy lại makemigration.
Và cách bạn làm điều này là
về cơ bản bạn chỉ đơn giản là xóa các tập tin,
bạn có thể xóa các tập tin này.
Tôi sẽ xóa tất cả những người bắt đầu bằng số không.
Nếu bạn đang đi để chạy lại makemigrate,
chỉ cần chạy lại makemigrations,
xóa tất cả những người bắt đầu với zero
và điều này là trong ứng dụng,
di chuyển, và sau đó thoát khỏi tất cả những,
và sau đó bạn có thể chạy lại
makemigrations và nó
sẽ đọc tập tin models.py của bạn,
và sau đó nó sẽ thực hiện tất cả
những việc cần thiết để tạo lại tệp di chuyển.
Phải, bây giờ đó không phải là cơ sở dữ liệu,
đó là hướng dẫn về cách tạo cơ sở dữ liệu, được chứ?
Vì vậy, đó là cách bạn chạy lại makemigration.
Bạn có thể chạy di chuyển từ đầu,
điều này thực sự dễ dàng hơn.
Vì vậy, bạn có thể loại xóa bỏ
các di chuyển cho một ứng dụng và tôi đã làm điều đó,
chỉ cần xóa sổ sách ở đây,
đó là những gì tôi đã làm và bắt đầu lại,
nhưng bạn có thể quét sạch tất cả các di chuyển và tất cả các
cơ sở dữ liệu và tất cả mọi thứ bằng cách chỉ cần
loại bỏ các tập tin trong
trường hợp này bởi vì chúng tôi đang chạy SQLite,
chỉ cần quét sạch các tập tin
rm db.sqlite bởi vì sau khi di chuyển,
đó là nơi tất cả mọi thứ kết thúc là trong tập tin đó.
Vậy thì anh quét sạch nó, nó biến mất rồi.
Bây giờ, bạn có thể đã tạo một tài khoản quản trị viên hoặc một
cái gì đó và bạn cũng sẽ xóa sạch tài khoản đó.
Bạn sẽ xóa sạch dữ liệu,
bạn sẽ xóa sạch các bảng, tất cả đều biến mất.
Đó là một điều tôi thích về SQLite,
bạn loại bỏ một tập tin này và nó theo nghĩa đen tất cả biến mất.
Và sau đó bạn chạy lại python3 manage.py
di chuyển và nó đọc
tất cả các di chuyển và làm cho bạn một
cơ sở dữ liệu trống tốt đẹp, sạch sẽ, hoàn hảo.
Vì vậy, nếu bạn đang loại bị mắc kẹt
và bạn không sợ mất dữ liệu của bạn,
mà trong hầu hết các lập trình viên bắt đầu
nó là okay để quét sạch điều SQLite của bạn
và chạy di chuyển một lần nữa.
Cứ thử đi.
Như tôi đã nói, nếu bạn tạo một tài khoản quản trị viên,
tốt, bạn phải thực hiện nó một lần nữa,
nhưng đó là điều tồi tệ nhất mà bạn có thể làm,
ít nhất là trong các ứng dụng đầu tiên này.
Vì vậy, bây giờ chúng ta đã nói về làm
thế nào để đưa ra một mô hình dữ liệu, làm
thế nào để mã hóa nó trong Django models.py,
làm thế nào để thực hiện di chuyển, và làm thế nào để
di chuyển công cụ và làm thế nào để tạo ra một cơ sở dữ liệu ra khỏi nó,
bây giờ chúng ta sẽ nói về loại
mã Python mà bạn có thể
chạy để cập nhật các mô hình này trong cơ sở dữ liệu.
[ NHẠC]