Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 26 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
26
Dung lượng
1,52 MB
Nội dung
TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT HÀ NỘI ======= BÁO CÁO HỌC THUẬT Tìm hiểu thư viện Flask Python NGUYỄN THỊ HẢI YẾN Hà Nội, T6/2023 MỤC LỤC MỤC LỤC CHƯƠNG : GIỚI THIỆU FLASK FRAMEWORK 1.1 Tổng quan flask framework 1.2 Cài đặt flask 1.2.1 Cài đặt Python .4 1.2.2 Cài đặt virtual env 1.2.3 Cài đặt flask 1.3 Tạo ứng dụng với Flask 1.4 Định tuyến(Routing) 1.5 Render file HTML CHƯƠNG HỆ QUẢN TRỊ CSDL POSTGRESQL 13 2.1 Giới thiệu hệ quản trị CSDL PostgreSQL (PostGIS) 13 Giới thiệu SQL 14 2 Các câu lệnh SQL thông dụng 15 CHƯƠNG ORM VÀ API 19 Giới thiệu ORM 19 Thư viện SQLAlchemy 19 3.2.1 Cài đặt SQLalchemy .20 3.2.2 Kết nối đến csdl sử dụng sqlalchemy 20 3 Sử dụng ORM để tương tác với CSDL 21 CHƯƠNG 1: GIỚI THIỆU FLASK FRAMEWORK 1.1 Tổng quan flask framework Flask web frameworks, thuộc loại micro-framework xây dựng ngơn ngữ lập trình Python Flask cho phép ta xây dựng ứng dụng web từ đơn giản tới phức tạp Nó xây dựng api nhỏ, ứng dụng web chẳng hạn trang web, blog, trang wiki website dựa theo thời gian hay chí trang web thương mại Flask cung cấp cho ta công cụ, thư viện công nghệ hỗ trợ ta làm công việc Flask micro-framework Điều có nghĩa Flask mơi trường độc lập, sử dụng thư viện khác bên ngồi Do vậy, Flask có ưu điểm nhẹ, có lỗi bị phụ thuộc dễ dàng phát xử lý lỗi bảo mật 1.2 Cài đặt flask 1.2.1 Cài đặt Python Nếu máy ta khơng có sẵn Python, ta cần cài đặt Tùy theo hệ điều hành ta sử dụng, ta dùng trình cài đặt khác (nếu Windows, ta download trực tiếp trình cài đặt từ trang chủ Python – https://www.python.org/downloads/ Nếu Mac OS X, ta cần dùng homebrew, Linux, ta phải dùng trình quản lý gói thích hợp tùy theo phân phối ta sử dụng – apt Ubuntu Debian, dnf Fedora, yum RHEL CentOS …) Tuy nhiên, dù dùng hệ điều hành nữa, ta cài đặt Python Python kết thúc vịng đời khơng hỗ trợ kể từ tháng năm 2020 Để kiểm tra xem Python cài đặt hoạt động tốt máy ta hay khơng, ta dùng cửa sổ lệnh (Command Prompt Windows PowerShell Window, terminal Mac OS X Linux) dùng lệnh python3 (nếu lệnh khơng hoạt động, ta thử dùng python) Bước cài đặt Flask, có vài cách khác để làm điều Tuy nhiên, tìm hiểu cách tốt để cài đặt gói thư viện (package) mà Flask số chúng Trong Python, ta tìm gói thư viện Flask từ kho lưu trữ công cộng (public repository) Các kho lưu trữ cho phép người sử dụng truy cập tải gói thư viện Python Kho lưu trữ cơng cộng thức Python gọi PyPI (viết tắt Python Package Index) Việc cài đặt gói từ PyPI đơn giản với cơng cụ có sẵn trình cài đặt Pyhon gọi pip (pip tích hợp sẵn phiên Python 3, Python 2, cần cài pip riêng Tuy vậy, dùng Python3, việc cài đặt pip không cần thiết) $ pip3 install Tuy nhiên thực tế, việc sử dụng lệnh pip khơng phổ biến số lý Nếu trình thơng dịch Python cài đặt máy ta mức độ toàn phần (global) để người sử dụng (user) sử dụng được, có khả lớn tài khoản mà ta dùng để đăng nhập (login) khơng có đủ thẩm quyền để chép file cần thiết q trình cài đặt vào vị trí chúng (dĩ nhiên không luôn – đặc biệt ta có quyền Admin với máy ta Nhưng nguyên tắc chung áp dụng cho hệ thống môi trường làm việc chung – công ty, tổ chức …) Và cho dù ta chạy lệnh pip để cài đặt gói mức độ tồn phần, cịn rắc rối khác: ta cài đặt gói thành cơng mức tồn phần, pip tải gói yêu cầu từ PyPI cài đặt vào trình Python có sẵn máy ta Từ thời điểm này, tất chương trình Python hệ thống ta sử dụng gói Giả sử trước ta sử dụng phiên cũ gói (ví dụ Flask phiên 0.11) để viết ứng dụng Tại thời điểm ta viết ứng dụng đó, Flask 0.11 phiên Nhưng sau, ta cần viết ứng dụng khác, lúc đó, có phiên Flask hơn, ví dụ 0.12 Nếu ta dùng pip để cài đặt Flask 0.12 mức độ toàn phần, phiên thay hoàn toàn phiên 0.11 hệ thống ta Điều xảy với ứng dụng cũ sử dụng Flask 0.11? Trong số trường hợp định, khơng hoạt động khơng tương thích với Flask phiên 0.12 Vì vậy, cách tốt tìm cách để cài đặt hai phiên Flask hệ thống ta, cho ứng dụng cũ cho ứng dụng 1.2.2 Cài đặt virtual env Để giải vấn đề cài đặt song song nhiều phiên gói thư viện cho ứng dụng khác nhau, Python đưa khái niệm môi trường ảo (virtual environment) Một môi trường ảo hồn chỉnh trình thơng dịch Python Khi ta cài đặt gói thư viện mơi trường ảo, trình thơng dịch Python cài đặt cho tồn hệ thống (hay mức tồn phần) khơng bị ảnh hưởng, gói cài đặt có tác dụng phạm vi môi trường ảo mà Vì vậy, tự cài đặt gói cần thiết phạm vi mơi trường ảo mà không sợ chúng ảnh hưởng đển ứng dụng mơi trường ảo khác Ngồi ra, mơi trường ảo hồn tồn thuộc người tạo nó, hay nói cách khác người tạo mơi trường ảo có tồn quyền thêm bớt gói mà khơng cần đến quyền quản trị hệ thống (Administrator) Chúng ta bắt đầu cách tạo thư mục (directory) cho dự án nhỏ Chúng ta đặt tên cho thư mục First_Flask Sau để tạo virtual evn project, ta gõ lệnh “virtualenv tên_project” vào command line: Khởi động Virtual Environment câu lệnh (phải vào thư mục chưa file activate – thông thướng nắm thư mục Scripts): activate 1.2.3 Cài đặt flask Chạy câu lệnh pip install flask 1.3 Tạo ứng dụng với Flask Để tạo ứng dụng flask ta gõ đoạn code sau save vào file application.py Và để thực thi chương trình ta cần thiết lập biến mơi trường set FLASK_APP=application.py cho phiên làm việc sau chạy lệnh flask run Sau lệnh này, Flask khởi động Web server cho phép truy cập ứng dụng cách nhập URL http://localhost:5000/ vào địa trình duyệt Tạo ứng dụng thứ 2: 1.4 Định tuyến(Routing) Phần hướng dẫn flask python tìm hiểu cách định tuyến url tới phần khác trang web Hầu hết website có url dễ nhớ, giúp người dùng dễ nhớ truy cập trực tiếp cần tới Sử dụng route() để định url người dùng trỏ tới hàm định, ví dụ sau: Khi đó, ta thu kết khác cho url ta định Ta nhận dòng chữ Home page truy cập vào địa http://localhost:5000/ Ta nhận dòng chữ User page truy cập vào địa http://localhost:5000/user Ta nhận dòng chữ About page truy cập vào địa http://localhost:5000/about 1.5 Render file HTML Hiện tại, hàm hiển thị ứng dụng trả chuỗi đơn giản Điều chưa đủ, muốn nâng cấp chuỗi trả thành trang HTML hoàn chỉnh Ta thực sau: Cách trả chuỗi HTML cho trình duyệt khơng phải giải pháp tốt Hãy thử tưởng tượng xem mã hàm hiển thị trở nên phức tạp ứng dụng hoàn tất liên tục nhận viết với nội dung khác từ người dùng Ứng dụng phải có nhiều hàm hiển thị để liên kết với URL khác Vì vậy, lúc cần thay đổi cách trình bày trang Web, phải cập nhật mã HTML hàm hiển thị Rõ ràng cách hay ứng dụng trở nên phức tạp có nhiều nội dung động Vì vậy, tốt nhiều chia phần trình bày (presentation) phần logic chương trình thành thành phần tách biệt Nếu làm vậy, bạn nhờ người thiết kế Web để tạo trang Web thật hấp dẫn, cịn bạn viết mã ứng dụng với Python hoàn toàn độc lập với họ Template cho phép thực việc phân tách phần trình bày logic ứng dụng Trong Flask, template viết file khác lưu thư mục templates gói ứng dụng Do đó, để bắt đầu với template, đảm bảo bạn thư mục First_Flask tạo thư mục chứa template Dưới template với chức tương tự đoạn mã HTML hàm hiển thị index() trả Bạn lưu lại file thư mục app/templates/index.html: 10 Quá trình chuyển đổi template thành trang HTML gọi trình kết xuất hay kiến tạo (render) Để kết xuất template, phải tham chiếu đến hàm Flask gọi render_template() Hàm nhận vào tên file danh sách tham số template trả template đó, thay vùng chứa (placeholder) giá trị tương ứng Hàm render_template() gọi đến Jinja2 Jinja2 thay đoạn mã khối {{ }} giá trị tương ứng từ tham số cung cấp gọi hàm render_template() 12 CHƯƠNG HỆ QUẢN TRỊ CSDL POSTGRESQL 2.1 Giới thiệu hệ quản trị CSDL PostgreSQL (PostGIS) PostgreSQL hệ quản trị sở liệu quan hệ đối tượng dựa POSTGRES, 4.2, khoa điện toán đại học California Berkeley phát triển POSTGRES mở đường cho nhiều khái niệm quan trọng mà hệ quản trị liệu thương mại lâu sau có Hệ quản trị sở liệu thuộc tính PostgreSQL phát triển mạnh mẽ nhanh chóng giới đối thủ cạnh tranh với hệ quản trị sở liệu thuộc tính PostgreSQL Đặc biệt lĩnh vực GIS hệ quản trị sở liệu thuộc tính PostgreSQL có lợi hệ quản trị sở liệu thuộc tính MySQL có khả tích hợp với hệ quản trị sở liệu đồ PostGIS PostgreSQL chương trình mã nguồn mở xây dựng theo chuẩn SQL99 có nhiều đặc điểm đại: Câu truy vấn phức hợp (complex query) Khóa ngoại (foreign key) Thủ tục kiện (trigger) Các khung nhìn (view) Tính tồn vẹn giao dịch (integrity transactions) Việc kiểm tra truy cập đồng thời đa phiên (multiversion concurrency control) PostgreSQL phổ biến giấy phép BSD cổ điển Nó khơng quy định hạn chế việc sử dụng mã nguồn phần mềm Bởi PostgreSQL dùng, sửa đổi phổ biến cho mục đích Cơ sở liệu Postgresql dạng sở liệu quan hệ Nó mạnh lưu trữ theo dạng bảng quan hệ, điều thú vị chạy hệ điều hành linux miễn phí, chạy ổn định không thua sở liệu thương mại, Nếu bạn lập trình mạng lựa chọn sở liệu Postgresql khuyên dùng Hệ quản trị sở liệu PostgreSQL có đầy đủ tính sở liệu quan hệ sử dụng câu truy vấn SQL, bảng quan hệ, khóa,…và đặc biệt tốc độ Postgresql cao cho phép nhiều người truy cập lúc, thích ứng cho bạn xây dựng ứng dụng mạng Internet 13 Giới thiệu SQL SQL viết tắt Structured Query Language có nghĩa ngơn ngữ truy vấn có cấu trúc, ngơn ngữ máy tính để lưu trữ, thao tác truy xuất liệu lưu trữ sở liệu quan hệ SQL ngôn ngữ chuẩn cho hệ sở liệu quan hệ Tất hệ thống quản lý sở liệu quan hệ (RDMS) MySQL, MS Access, Oracle, Sybase, Informix, Postgres SQL Server sử dụng SQL làm ngôn ngữ sở liệu chuẩn SQL sử dụng phổ biến có ưu điểm sau: Cho phép người dùng truy cập liệu hệ thống quản lý sở liệu quan hệ Cho phép người dùng mô tả liệu Cho phép người dùng xác định liệu sở liệu thao tác liệu Cho phép nhúng ngôn ngữ khác sử dụng mô-đun SQL, thư viện trình biên dịch trước Cho phép người dùng tạo thả sở liệu bảng Cho phép người dùng tạo chế độ view, thủ tục lưu trữ, chức sở liệu Cho phép người dùng thiết lập quyền bảng, thủ tục view Các lệnh SQL tiêu chuẩn để tương tác với sở liệu quan hệ CREATE, SELECT, INSERT, UPDATE, DELETE DROP Các lệnh phân thành nhóm sau dựa chất chúng DDL - Ngôn ngữ định nghĩa liệu(Data Definition Language) Lệnh Mô tả CREATE Tạo bảng mới, view bảng, đối tượng khác sở liệu ALTER Sửa đổi đối tượng sở liệu có, chẳng hạn bảng DROP Xố tồn bảng, view bảng đối tượng khác sở liệu 14 DML - Ngôn ngữ thao tác liệu(Data Manipulation Language) Lệnh Mô tả SELECT Lấy ghi định từ nhiều bảng INSERT Tạo ghi UPDATE Chỉnh sủa nghi DELETE Xóa ghi 2 Các câu lệnh SQL thông dụng Tạo Server Tạo DataBase 15 Tạo bảng flights Thêm liệu vào bảng: Khóa ngoại (foreign key) • Tạo bảng passengers bao gồm trường sau • Trường flight_id tham chiếu đến trường id bảng fights tạo lúc trước thông qua từ khóa REFERENCES 16 Thêm liệu vào bảng Từ liệu thêm vào bảng flights passengers ta có câu hỏi sau: Hiện có chuyến bay nào? Có chuyến bay xuất phát từ Hà Nội? Có chuyến bay xuất phát từ Hà Nội? Có chuyến bay có thời gian bay lâu 500 (phút)? Có chuyến bay bay đến HCM có thời gian bay lâu 500 (phút) Có chuyến bay bay đến HCM có thời gian bay lâu 500 (phút) Có chuyến bay xuất phát từ Hà Nội HCM Có chuyên bay xuất phát từ địa phương có chữ ‘H’ (ví dụ: Hà Nội, HCM) Thử thách: liệt kê chuyến bay có nhiều hành khách (+1 điểm) Để trả lời cho câu hỏi ta sử dụng Câu lệnh sql – SELECT SELECT * FROM flights SELECT origin, destination FROM flights SELECT * FROM flights WHERE id = SELECT * FROM flights WHERE origin = 'Hà Nội’ SELECT COUNT(*) FROM flights WHERE origin = 'Hà Nội’ SELECT * FROM flights WHERE duration > 500 SELECT * FROM flights WHERE destination = 'HCM' AND duration > 500 SELECT * FROM flights WHERE destination = 'HCM' OR duration > 500 SELECT * FROM flights WHERE origin IN ('Hà Nội', 'HCM’) 17 SELECT * FROM flights WHERE origin LIKE '%H%’ Để xóa liệu bảng ta sử dụng câu lệnh sql – DELETE DELETE FROM flights WHERE destination = ‘HCM' Để cập nhật liệu record bảng ta sử dụng câu lệnh sql – UPDATE UPDATE flights SET duration = 400 WHERE origin = 'Hà Nội' AND destination = 'Hải Phòng'; Câu lệnh sql – SELECT (lồng) SELECT flight_id FROM passengers GROUP BY flight_id HAVING COUNT(*) >1 SELECT * FROM flights WHERE id IN (SELECT flight_id FROM passengers GROUP BY flight_id HAVING COUNT(*) > 1) 18 CHƯƠNG ORM VÀ API Giới thiệu ORM Ánh xạ quan hệ đối tượng (ORM) kỹ thuật cho phép ta truy vấn thao tác liệu từ sở liệu cách sử dụng mơ hình hướng đối tượng Khi nói ORM, hầu hết người đề cập đến thư viện thực kỹ thuật Ánh xạ quan hệ đối tượng, cụm từ "ORM" Thư viện ORM thư viện hồn tồn bình thường viết ngơn ngữ ta chọn, đóng gói mã cần thiết để thao tác liệu, ta không sử dụng SQL nữa; ta tương tác trực tiếp với đối tượng ngôn ngữ ta sử dụng Thư viện SQLAlchemy Một nhiệm vụ phổ biến bắt đầu xây dựng web service để xây dựng sở liệu chắn, bền vững Trong khứ, lập trình viên phải viết câu lệnh SQL, thông qua chúng, để thiết database hay lấy liệu từ database Ngày nay, lập trình viên sử dụng object-relational mapping( ORM) thay câu lệnh SQL phức tạp, khó khăn việc bảo trì, đọc hiểu chỉnh sửa ORM công nghệ lập trình, cho phép chuyển đổi (convert) từ data database với đối tượng ngôn ngữ lập trình hướng đối tượng Thơng thường, ngơn ngữ hướng đối tượng python tồn kiểu thể kiểu nguyên thủy(giống integer, string) Ví dụ, Một người có địa nhà khác nhau, địa thường trú chỗ , chỗ kia, có một, vài số điện thoại hay dùng, Một địa phải lưu trữ mã bưu điện tỉnh/thành phố đó, hay lưu trữ tên đường, số nhà.v.v Điều thể ngôn ngữ hướng đối tượng sau: Một Person object có danh sách Address object, danh sách PhoneNumber object Một Address object có PostCode object., StreetName object StreetNumber object Mặc dù object đơn giản PostCode StreetName biểu diễn string, object phức tạp hơn, giống Address object hay Person, sử dụng kiểu nguyên thủy String, Integer để thể Thêm vào đó, 19 đối tượng phức tạp bao gồm thể class, phương thức class sử dụng kiểu cho tất trường hợp Để quản lý đối tượng phức tạp, người phát triển lớp hệ thống , gọi ORM Ở ví dụ trước chúng ta, ORM xây dựng với thành phần: class Person, class Address , class PhoneNumber class mapper để thực việc map python class với bảng database Thay phải viết code SQL tẻ nhạt, ORM mang đển cho ta tùy chọn sử dụng lập trình logic hệ thống 3.2.1 Cài đặt SQLalchemy Chạy lệnh pip install -U Flask-SQLAlchemy command line 3.2.2 Kết nối đến csdl sử dụng sqlalchemy Có nhiều cách để kết nối đến CSDL sử dụng SQLAlchemy Sau cách để kết nối sử dụng create_engine 20 Chạy file tạo cho ta kết 3 Sử dụng ORM để tương tác với CSDL Khai báo class: class tên_đối_tượng Hàm init : Hàm khởi tạo đối tượng (khai báo trường liệu đối tượng) 21 22 23 24 Object relation model 25 Create table from objects Thêm liệu sử dụng ORM: flight = Flight(origin="New York", destination="Paris", duration=540) db.session.add(flight) 26