Tác giả đã chọn quỹ nguồn mở và miễn phí để nhận quyên góp như một phần của chương trình Write for quyên góp. Show
Giới thiệuTrong các ứng dụng web, bạn thường cần một cơ sở dữ liệu, là một bộ sưu tập dữ liệu có tổ chức. Bạn sử dụng cơ sở dữ liệu để lưu trữ và duy trì dữ liệu liên tục có thể được truy xuất và thao tác hiệu quả. Ví dụ: trong một ứng dụng truyền thông xã hội, bạn có một cơ sở dữ liệu trong đó dữ liệu người dùng (thông tin cá nhân, bài đăng, nhận xét, người theo dõi) được lưu trữ theo cách có thể được thao tác hiệu quả. Bạn có thể thêm dữ liệu vào cơ sở dữ liệu, truy xuất nó, sửa đổi nó hoặc xóa nó, tùy thuộc vào các yêu cầu và điều kiện khác nhau. Trong một ứng dụng web, các yêu cầu này có thể là người dùng thêm một bài đăng mới, xóa một bài đăng hoặc xóa tài khoản của họ, điều này có thể hoặc không thể xóa bài đăng của họ. Các hành động bạn thực hiện để thao tác dữ liệu sẽ phụ thuộc vào các tính năng cụ thể trong ứng dụng của bạn. Ví dụ: bạn có thể không muốn người dùng thêm bài đăng không có tiêu đề. Flask là một khung web Python nhẹ, cung cấp các công cụ và tính năng hữu ích để tạo các ứng dụng web bằng ngôn ngữ Python. PostgreSQL, hoặc Postgres, là một hệ thống quản lý cơ sở dữ liệu quan hệ cung cấp việc triển khai ngôn ngữ truy vấn SQL. Nó tuân thủ các tiêu chuẩn và có nhiều tính năng nâng cao như giao dịch đáng tin cậy và đồng thời mà không cần khóa đọc. Trong hướng dẫn này, bạn sẽ xây dựng một ứng dụng web đánh giá sách nhỏ cho thấy cách sử dụng thư viện 7, bộ điều hợp cơ sở dữ liệu PostgreSQL cho phép bạn tương tác với cơ sở dữ liệu PostgreSQL của mình trong Python. Bạn sẽ sử dụng nó với bình để thực hiện các tác vụ cơ bản, chẳng hạn như kết nối với máy chủ cơ sở dữ liệu, tạo bảng, chèn dữ liệu vào bảng và lấy dữ liệu từ bảng.Điều kiện tiên quyết
Bước 1 - Tạo cơ sở dữ liệu và người dùng PostgreSQLTrong bước này, bạn sẽ tạo một cơ sở dữ liệu có tên 9 và người dùng cơ sở dữ liệu có tên 0 cho ứng dụng bình của bạn.Trong quá trình cài đặt Postgres, người dùng hệ điều hành có tên 1 đã được tạo để tương ứng với người dùng quản trị PostgreSQL 1. Bạn cần sử dụng người dùng này để thực hiện các nhiệm vụ quản trị. Bạn có thể sử dụng 3 và chuyển tên người dùng với tùy chọn 4.Đăng nhập vào phiên Postgres tương tác bằng lệnh sau:
Bạn sẽ được cung cấp một lời nhắc PostgreSQL nơi bạn có thể thiết lập các yêu cầu của mình. Đầu tiên, hãy tạo cơ sở dữ liệu cho dự án của bạn:
Lưu ý: Mỗi câu lệnh Postgres phải kết thúc bằng một đại hội, vì vậy hãy đảm bảo rằng lệnh của bạn kết thúc bằng một câu nếu bạn đang gặp vấn đề. Every Postgres statement must end with a semi-colon, so make sure that your command ends with one if you are experiencing issues. Tiếp theo, tạo một người dùng cơ sở dữ liệu cho dự án của chúng tôi. Đảm bảo chọn mật khẩu an toàn:
Sau đó, cung cấp quyền truy cập người dùng mới này để quản lý cơ sở dữ liệu mới của bạn:
Để xác nhận cơ sở dữ liệu đã được tạo, hãy lấy danh sách cơ sở dữ liệu bằng cách nhập lệnh sau:
Bạn sẽ thấy 9 trong danh sách các cơ sở dữ liệu.Khi bạn kết thúc, thoát khỏi lời nhắc PostgreSQL bằng cách nhập:
Postgres hiện được thiết lập để bạn có thể kết nối và quản lý thông tin cơ sở dữ liệu của nó thông qua Python bằng thư viện 7. Tiếp theo, bạn sẽ cài đặt thư viện này cùng với gói Flask.Bước 2 - Cài đặt bình và psycopg2Trong bước này, bạn sẽ cài đặt Flask và thư viện 7 để bạn có thể tương tác với cơ sở dữ liệu của mình bằng Python.Với môi trường ảo được kích hoạt, sử dụng 8 để cài đặt bình và thư viện 7:
Sau khi cài đặt được hoàn thành thành công, bạn sẽ thấy một dòng tương tự như sau ở cuối đầu ra:
Bây giờ bạn có các gói cần thiết được cài đặt trên môi trường ảo của bạn. Tiếp theo, bạn sẽ kết nối và thiết lập cơ sở dữ liệu của mình. Bước 3 - Thiết lập cơ sở dữ liệuTrong bước này, bạn sẽ tạo một tệp Python trong thư mục dự án 8 của mình để kết nối với cơ sở dữ liệu 9, tạo một bảng để lưu trữ sách và chèn một số sách với các đánh giá vào nó.Đầu tiên với môi trường lập trình của bạn được kích hoạt, hãy mở một tệp mới có tên 2 trong thư mục 8 của bạn.
Tệp này sẽ mở kết nối với cơ sở dữ liệu 9, tạo một bảng có tên 5 và điền vào bảng bằng dữ liệu mẫu. Thêm mã sau vào nó:flask_app/init_db.py
Lưu và đóng tập tin. Trong tệp này, trước tiên bạn nhập mô -đun 6 mà bạn sẽ sử dụng để truy cập các biến môi trường nơi bạn sẽ lưu trữ tên người dùng và mật khẩu cơ sở dữ liệu của mình để chúng không hiển thị trong mã nguồn của bạn.Bạn nhập thư viện 7. Sau đó, bạn mở kết nối với cơ sở dữ liệu 9 bằng hàm 9. Bạn chỉ định máy chủ, đó là localhost trong trường hợp này. Bạn chuyển tên cơ sở dữ liệu cho tham số 0.Bạn cung cấp tên người dùng và mật khẩu của mình thông qua đối tượng 1, cho phép bạn truy cập vào các biến môi trường bạn đặt trong môi trường lập trình của mình. Bạn sẽ lưu trữ tên người dùng cơ sở dữ liệu trong một biến môi trường có tên là 2 và mật khẩu trong biến môi trường có tên là 3. Điều này cho phép bạn lưu trữ tên người dùng và mật khẩu bên ngoài mã nguồn của bạn, để thông tin nhạy cảm của bạn không bị rò rỉ khi mã nguồn được lưu trong điều khiển nguồn hoặc được tải lên máy chủ trên Internet. Ngay cả khi kẻ tấn công có được quyền truy cập vào mã nguồn của bạn, họ sẽ không có quyền truy cập vào cơ sở dữ liệu.Bạn tạo một con trỏ gọi là 4 bằng phương thức 5, cho phép mã Python thực thi các lệnh PostgreSQL trong phiên cơ sở dữ liệu.Bạn sử dụng phương thức con trỏ 6 để xóa bảng 5 nếu nó đã tồn tại. Điều này tránh khả năng của một bảng khác có tên 5 hiện tại, điều này có thể dẫn đến hành vi khó hiểu (ví dụ, nếu nó có các cột khác nhau). Đây không phải là trường hợp ở đây, bởi vì bạn đã tạo ra bảng, vì vậy lệnh SQL đã thắng được thực hiện. Lưu ý rằng điều này sẽ xóa tất cả các dữ liệu hiện có bất cứ khi nào bạn thực thi tệp 2 này. Đối với mục đích của chúng tôi, bạn sẽ chỉ thực hiện tệp này một lần để bắt đầu cơ sở dữ liệu, nhưng bạn có thể muốn thực thi lại để xóa bất kỳ dữ liệu nào bạn đã chèn và bắt đầu lại với dữ liệu mẫu ban đầu.Sau đó, bạn sử dụng 0 để tạo một bảng có tên 5 với các cột sau:
Sau khi tạo bảng, bạn sử dụng phương pháp con trỏ ____ ____66 để chèn hai cuốn sách vào bàn, một câu chuyện về hai thành phố của Charles Dickens và Anna Karenina của Leo Tolstoy. Bạn sử dụng trình giữ chỗ 0 để chuyển các giá trị cho câu lệnh SQL. 7 xử lý việc chèn vào nền theo cách ngăn chặn các cuộc tấn công tiêm SQL.Khi bạn hoàn tất việc chèn dữ liệu sách vào bảng của mình, bạn sử dụng phương thức 2 để thực hiện giao dịch và áp dụng các thay đổi vào cơ sở dữ liệu. Sau đó, bạn làm sạch mọi thứ bằng cách đóng con trỏ bằng 3 và kết nối với 4.Để kết nối cơ sở dữ liệu được thiết lập, hãy đặt các biến môi trường 2 và 3 bằng cách chạy các lệnh sau. Hãy nhớ sử dụng tên người dùng và mật khẩu của riêng bạn: 0Bây giờ, hãy chạy tệp 2 của bạn trong thiết bị đầu cuối bằng lệnh 8: 1Khi tệp hoàn tất việc thực thi không có lỗi, bảng 5 mới sẽ được thêm vào cơ sở dữ liệu 9 của bạn.Đăng nhập vào phiên Postgres tương tác để kiểm tra bảng 5 mới.
Kết nối với cơ sở dữ liệu 9 bằng lệnh 03: 3Sau đó sử dụng tuyên bố 04 để lấy các tiêu đề và tác giả của sách từ bảng 5: 4Bạn sẽ thấy một đầu ra như sau: 5Thoát khỏi phiên tương tác với 06.Tiếp theo, bạn sẽ tạo một ứng dụng bình nhỏ, kết nối với cơ sở dữ liệu, truy xuất hai đánh giá sách bạn đã chèn vào cơ sở dữ liệu và hiển thị chúng trên trang Index. Bước 4 - Hiển thị sáchTrong bước này, bạn sẽ tạo một ứng dụng Flask với một trang chỉ mục truy xuất các cuốn sách có trong cơ sở dữ liệu và hiển thị chúng. Với môi trường lập trình của bạn được kích hoạt và cài đặt bình, mở một tệp có tên 07 để chỉnh sửa bên trong thư mục 8 của bạn: 6Tệp này sẽ thiết lập kết nối cơ sở dữ liệu của bạn và tạo một tuyến bình đơn để sử dụng kết nối đó. Thêm mã sau vào tệp: flask_app/app.py 7Lưu và đóng tập tin. Tại đây, bạn nhập mô -đun 6, thư viện 7 và lớp 11 và 12 từ gói 13. Bạn thực hiện một phiên bản ứng dụng Flask được gọi là 14.Bạn xác định một hàm gọi là 15, mở kết nối với cơ sở dữ liệu 9 bằng cách sử dụng người dùng và mật khẩu bạn lưu trữ trong các biến môi trường 2 và 3 của bạn. Hàm trả về đối tượng kết nối 19 mà bạn sẽ sử dụng để truy cập cơ sở dữ liệu.Sau đó, bạn tạo một tuyến đường chính 20 và chức năng xem 21 bằng cách sử dụng trình trang trí 22. Trong chức năng xem 21, bạn mở kết nối cơ sở dữ liệu bằng hàm 15, bạn tạo một con trỏ và thực hiện câu lệnh 25 SQL để có tất cả các cuốn sách trong cơ sở dữ liệu. Bạn sử dụng phương thức 26 để lưu dữ liệu trong một biến gọi là 5. Sau đó, bạn đóng con trỏ và kết nối. Cuối cùng, bạn trả lại một cuộc gọi cho chức năng 12 để hiển thị một tệp mẫu có tên 29 Chuyển cho nó danh sách các cuốn sách bạn lấy từ cơ sở dữ liệu trong biến 5.Để hiển thị các cuốn sách bạn có trong cơ sở dữ liệu của mình trên trang Index, trước tiên bạn sẽ tạo một mẫu cơ sở, sẽ có tất cả các mẫu HTML cơ bản mà các mẫu khác cũng sẽ sử dụng để tránh lặp lại mã. Sau đó, bạn sẽ tạo tệp mẫu 29 mà bạn đã hiển thị trong hàm 21 của mình. Để tìm hiểu thêm về các mẫu, hãy xem cách sử dụng các mẫu trong ứng dụng bình.Tạo thư mục 33, sau đó mở một mẫu mới có tên là 34: 8Thêm mã sau bên trong tệp 34:flask_app/templates/base.html 9Lưu và đóng tập tin. Tại đây, bạn nhập mô -đun 6, thư viện 7 và lớp 11 và 12 từ gói 13. Bạn thực hiện một phiên bản ứng dụng Flask được gọi là 14.About page if you choose to include one in your application.Bạn xác định một hàm gọi là 15, mở kết nối với cơ sở dữ liệu 9 bằng cách sử dụng người dùng và mật khẩu bạn lưu trữ trong các biến môi trường 2 và 3 của bạn. Hàm trả về đối tượng kết nối 19 mà bạn sẽ sử dụng để truy cập cơ sở dữ liệu. 0Sau đó, bạn tạo một tuyến đường chính 20 và chức năng xem 21 bằng cách sử dụng trình trang trí 22. Trong chức năng xem 21, bạn mở kết nối cơ sở dữ liệu bằng hàm 15, bạn tạo một con trỏ và thực hiện câu lệnh 25 SQL để có tất cả các cuốn sách trong cơ sở dữ liệu. Bạn sử dụng phương thức 26 để lưu dữ liệu trong một biến gọi là 5. Sau đó, bạn đóng con trỏ và kết nối. Cuối cùng, bạn trả lại một cuộc gọi cho chức năng 12 để hiển thị một tệp mẫu có tên 29 Chuyển cho nó danh sách các cuốn sách bạn lấy từ cơ sở dữ liệu trong biến 5.flask_app/templates/index.html 1Lưu và đóng tập tin. Tại đây, bạn nhập mô -đun 6, thư viện 7 và lớp 11 và 12 từ gói 13. Bạn thực hiện một phiên bản ứng dụng Flask được gọi là 14.Bạn xác định một hàm gọi là 15, mở kết nối với cơ sở dữ liệu 9 bằng cách sử dụng người dùng và mật khẩu bạn lưu trữ trong các biến môi trường 2 và 3 của bạn. Hàm trả về đối tượng kết nối 19 mà bạn sẽ sử dụng để truy cập cơ sở dữ liệu.Sau đó, bạn tạo một tuyến đường chính 20 và chức năng xem 21 bằng cách sử dụng trình trang trí 22. Trong chức năng xem 21, bạn mở kết nối cơ sở dữ liệu bằng hàm 15, bạn tạo một con trỏ và thực hiện câu lệnh 25 SQL để có tất cả các cuốn sách trong cơ sở dữ liệu. Bạn sử dụng phương thức 26 để lưu dữ liệu trong một biến gọi là 5. Sau đó, bạn đóng con trỏ và kết nối. Cuối cùng, bạn trả lại một cuộc gọi cho chức năng 12 để hiển thị một tệp mẫu có tên 29 Chuyển cho nó danh sách các cuốn sách bạn lấy từ cơ sở dữ liệu trong biến 5. 2Để hiển thị các cuốn sách bạn có trong cơ sở dữ liệu của mình trên trang Index, trước tiên bạn sẽ tạo một mẫu cơ sở, sẽ có tất cả các mẫu HTML cơ bản mà các mẫu khác cũng sẽ sử dụng để tránh lặp lại mã. Sau đó, bạn sẽ tạo tệp mẫu 29 mà bạn đã hiển thị trong hàm 21 của mình. Để tìm hiểu thêm về các mẫu, hãy xem cách sử dụng các mẫu trong ứng dụng bình. 0Tạo thư mục 33, sau đó mở một mẫu mới có tên là 34: 4Thêm mã sau bên trong tệp 34: 5Mẫu cơ sở này có tất cả các nồi hơi HTML mà bạn sẽ cần phải sử dụng lại trong các mẫu khác của bạn. Khối 5 sẽ được thay thế để đặt tiêu đề cho mỗi trang và khối 37 sẽ được thay thế bằng nội dung của mỗi trang. Thanh điều hướng có hai liên kết, một cho trang chỉ mục nơi bạn sử dụng hàm trợ giúp 38 để liên kết với chức năng xem 21 và một cho một trang Giới thiệu nếu bạn chọn đưa một vào ứng dụng của mình.Tiếp theo, mở một mẫu gọi là 29. Đây là mẫu bạn tham chiếu trong tệp 07:Bước 5 - Thêm sách mớiTrong bước này, bạn sẽ tạo một tuyến đường mới để thêm sách và đánh giá mới vào cơ sở dữ liệu. Bạn sẽ thêm một trang với một biểu mẫu web nơi người dùng nhập tiêu đề sách, tác giả sách, số lượng trang và đánh giá sách. Để máy chủ phát triển chạy và mở một cửa sổ thiết bị đầu cuối mới. Đầu tiên, hãy mở tệp 07 của bạn: 6Để xử lý biểu mẫu web, bạn sẽ cần nhập một vài thứ từ gói 13:
Thêm các bản nhập này vào dòng đầu tiên trong tệp: flask_app/app.py 7Sau đó thêm tuyến sau ở cuối tệp 07:flask_app/app.py 8Lưu và đóng tập tin. Trong tuyến đường này, bạn chuyển bộ tuple 61 cho tham số 62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường 63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên 64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.Mở mẫu 64 mới: 9Thêm mã sau vào nó: flask_app/templates/create.html 0Lưu và đóng tập tin. Trong tuyến đường này, bạn chuyển bộ tuple 61 cho tham số 62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường 63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên 64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.Mở mẫu 64 mới:Thêm mã sau vào nó: Bạn mở rộng mẫu cơ sở, đặt tiêu đề làm tiêu đề và sử dụng thẻ 66 với thuộc tính 67 được đặt thành 68 để chỉ ra rằng biểu mẫu sẽ gửi yêu cầu POST.Submit button at the end of the form.Bạn có một trường văn bản có tên 5, mà bạn sẽ sử dụng để truy cập dữ liệu tiêu đề trong tuyến đường 63 của bạn. 1Bạn có một trường văn bản cho tác giả, một trường số cho số trang và khu vực văn bản để xem xét sách.Add a New Book page with an input field for a book title, one for its author, and one for the number of pages the book has, a text area for the book’s review, and a Submit button. Cuối cùng, bạn có một nút gửi ở cuối biểu mẫu. Bây giờ, với máy chủ phát triển đang chạy, hãy sử dụng trình duyệt của bạn để điều hướng đến tuyến đường 63: 6Bạn sẽ thấy một trang Sách mới với trường đầu vào cho một tiêu đề sách, một cho tác giả của nó và một cho số trang mà cuốn sách có, một khu vực văn bản để đánh giá sách và một nút gửi. flask_app/app.py 3Lưu và đóng tập tin. Trong tuyến đường này, bạn chuyển bộ tuple 61 cho tham số 62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường 63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên 64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.Mở mẫu 64 mới:Thêm mã sau vào nó: Bạn mở rộng mẫu cơ sở, đặt tiêu đề làm tiêu đề và sử dụng thẻ 66 với thuộc tính 67 được đặt thành 68 để chỉ ra rằng biểu mẫu sẽ gửi yêu cầu POST.Bạn có một trường văn bản có tên 5, mà bạn sẽ sử dụng để truy cập dữ liệu tiêu đề trong tuyến đường 63 của bạn. 1Bạn có một trường văn bản cho tác giả, một trường số cho số trang và khu vực văn bản để xem xét sách. Cuối cùng, bạn có một nút gửi ở cuối biểu mẫu. Bây giờ, với máy chủ phát triển đang chạy, hãy sử dụng trình duyệt của bạn để điều hướng đến tuyến đường 63: 5Bạn sẽ thấy một trang Sách mới với trường đầu vào cho một tiêu đề sách, một cho tác giả của nó và một cho số trang mà cuốn sách có, một khu vực văn bản để đánh giá sách và một nút gửi. flask_app/templates/base.html 6Lưu và đóng tập tin. Trong tuyến đường này, bạn chuyển bộ tuple 61 cho tham số 62 để cho phép cả nhận và đăng yêu cầu. Nhận yêu cầu được sử dụng để lấy dữ liệu từ máy chủ. Yêu cầu POST được sử dụng để đăng dữ liệu lên một tuyến đường cụ thể. Theo mặc định, chỉ cho phép nhận được yêu cầu. Khi người dùng trước tiên yêu cầu tuyến đường 63 bằng cách sử dụng yêu cầu GET, một tệp mẫu có tên 64 sẽ được hiển thị. Sau này, bạn sẽ chỉnh sửa tuyến đường này để xử lý các yêu cầu POST khi người dùng điền và gửi biểu mẫu web để thêm sách mới.Mở mẫu 64 mới:Thêm mã sau vào nó: Bạn mở rộng mẫu cơ sở, đặt tiêu đề làm tiêu đề và sử dụng thẻ CREATE DATABASE flask_db; 66 với thuộc tính CREATE DATABASE flask_db; 67 được đặt thành CREATE DATABASE flask_db; 68 để chỉ ra rằng biểu mẫu sẽ gửi yêu cầu POST.Bạn có một trường văn bản có tên 5, mà bạn sẽ sử dụng để truy cập dữ liệu tiêu đề trong tuyến đường 63 của bạn.Bạn có một trường văn bản cho tác giả, một trường số cho số trang và khu vực văn bản để xem xét sách. Làm thế nào để Python tích hợp với PostgreSQL?Thiết lập kết nối bằng Python, bạn có thể tạo các kết nối mới bằng hàm Connect ().Điều này chấp nhận các tham số kết nối cơ bản như dbname, người dùng, mật khẩu, máy chủ, cổng và trả về một đối tượng kết nối.Sử dụng chức năng này, bạn có thể thiết lập kết nối với PostgreSQL.create new connections using the connect() function. This accepts the basic connection parameters such as dbname, user, password, host, port and returns a connection object. Using this function, you can establish a connection with the PostgreSQL.
Cơ sở dữ liệu nào là tốt nhất cho bình?Flask có thể sử dụng SQLite và MySQL làm cơ sở dữ liệu phụ trợ.Chúng tôi khuyên bạn nên sử dụng SQLalchemy làm ORM với các cơ sở dữ liệu quan hệ này.SQLite and MySQL as a backend database. We recommend that you use SQLAlchemy as ORM with these relational databases.
Flask hỗ trợ cơ sở dữ liệu nào?Cơ sở dữ liệu được hỗ trợ.. Drizzle.. Firebird.. Microsoft SQL Server .. MySQL.. Oracle.. PostgreSQL.. SQLite.. Sybase.. |