DB-API Python - geeksforgeeks
Trình ánh xạ quan hệ đối tượng (ORM) là một thư viện mã tự động chuyển dữ liệu được lưu trữ trong các bảng cơ sở dữ liệu quan hệ thành các đối tượng thường được sử dụng trong mã ứng dụng Show
Tại sao ORM hữu ích?ORM cung cấp mức độ trừu tượng cao trên cơ sở dữ liệu quan hệ cho phép nhà phát triển viết mã Python thay vì SQL để tạo, đọc, cập nhật và xóa dữ liệu cũng như lược đồ trong cơ sở dữ liệu của họ. Các nhà phát triển có thể sử dụng ngôn ngữ lập trình mà họ cảm thấy thoải mái để làm việc với cơ sở dữ liệu thay vì viết các câu lệnh SQL hoặc các thủ tục được lưu trữ Ví dụ: nếu không có ORM, nhà phát triển sẽ viết câu lệnh SQL sau để truy xuất mọi hàng trong bảng NGƯỜI DÙNG trong đó cột SELECT * FROM USERS WHERE zip_code=94107; Thay vào đó, truy vấn Django ORM tương đương sẽ giống như mã Python sau # obtain everyone in the 94107 zip code and assign to users variable users = Users.objects.filter(zip_code=94107) Khả năng viết mã Python thay vì SQL có thể tăng tốc độ phát triển ứng dụng web, đặc biệt là khi bắt đầu dự án. Khả năng tăng tốc độ phát triển tiềm năng đến từ việc không phải chuyển từ mã Python sang viết các câu lệnh SQL mô hình khai báo. Mặc dù một số nhà phát triển phần mềm có thể không ngại chuyển đổi qua lại giữa các ngôn ngữ, nhưng việc loại bỏ một nguyên mẫu hoặc bắt đầu một ứng dụng web bằng một ngôn ngữ lập trình đơn lẻ thường dễ dàng hơn. ORM cũng giúp về mặt lý thuyết có thể chuyển đổi một ứng dụng giữa các cơ sở dữ liệu quan hệ khác nhau. Ví dụ: nhà phát triển có thể sử dụng SQLite để phát triển cục bộ và MySQL trong sản xuất. Một ứng dụng sản xuất có thể được chuyển từ MySQL sang PostgreSQL với các sửa đổi mã tối thiểu Tuy nhiên, trên thực tế, tốt nhất là sử dụng cùng một cơ sở dữ liệu để phát triển cục bộ như được sử dụng trong sản xuất. Nếu không, các lỗi không mong muốn có thể xảy ra trong sản xuất mà không thấy trong môi trường phát triển cục bộ. Ngoài ra, rất hiếm khi một dự án chuyển từ cơ sở dữ liệu đang sản xuất này sang cơ sở dữ liệu khác trừ khi có lý do cấp bách Tôi có phải sử dụng ORM cho ứng dụng web của mình không?Không cần thư viện ORM Python để truy cập cơ sở dữ liệu quan hệ. Trên thực tế, quyền truy cập cấp thấp thường được cung cấp bởi một thư viện khác được gọi là trình kết nối cơ sở dữ liệu, chẳng hạn như psycopg (đối với PostgreSQL) hoặc MySQL-python (đối với MySQL). Hãy xem bảng bên dưới cho biết cách ORM có thể hoạt động với các khung và trình kết nối web khác nhau cũng như cơ sở dữ liệu quan hệ Ví dụ, bảng trên cho thấy rằng SQLAlchemy có thể hoạt động với các khung web và trình kết nối cơ sở dữ liệu khác nhau. Nhà phát triển cũng có thể sử dụng ORM mà không cần khung web, chẳng hạn như khi tạo công cụ phân tích dữ liệu hoặc tập lệnh bó mà không có giao diện người dùng Nhược điểm của việc sử dụng ORM là gì?Có rất nhiều nhược điểm của ORM, bao gồm
trở kháng không phù hợpCụm từ "không phù hợp trở kháng" thường được sử dụng cùng với ORM. Trở kháng không phù hợp là một thuật ngữ chung cho những khó khăn xảy ra khi di chuyển dữ liệu giữa các bảng quan hệ và các đối tượng ứng dụng. Ý chính là cách nhà phát triển sử dụng các đối tượng khác với cách dữ liệu được lưu trữ và nối trong các bảng quan hệ Bài viết về sự không phù hợp trở kháng ORM này thực hiện rất tốt việc giải thích khái niệm này ở mức cao và cung cấp các sơ đồ để hình dung vấn đề xảy ra Khả năng giảm hiệu suấtMột trong những mối quan tâm liên quan đến bất kỳ sự trừu tượng hóa hoặc khuôn khổ cấp cao hơn nào là khả năng làm giảm hiệu suất. Với ORM, hiệu suất đạt được đến từ việc dịch mã ứng dụng thành câu lệnh SQL tương ứng có thể không được điều chỉnh đúng cách ORM cũng thường dễ thử nhưng khó thành thạo. Ví dụ: người mới bắt đầu sử dụng Django có thể không biết về Django và cách nó có thể cải thiện hiệu suất quan hệ khóa ngoại của một số truy vấn. Có hàng tá mẹo và thủ thuật hiệu suất cho mọi ORM. Có thể đầu tư thời gian vào việc học những điều kỳ quặc đó có thể tốt hơn là chỉ học SQL và cách viết thủ tục lưu sẵn Có rất nhiều sự phân vân "có thể hoặc không" và "tiềm năng" trong phần này. Trong các dự án lớn, ORM đủ tốt cho khoảng 80-90% trường hợp sử dụng nhưng trong 10-20% tương tác cơ sở dữ liệu của dự án, có thể có những cải tiến lớn về hiệu suất bằng cách yêu cầu quản trị viên cơ sở dữ liệu có kiến thức viết các câu lệnh SQL được điều chỉnh để thay thế mã SQL do ORM tạo ra Chuyển độ phức tạp từ cơ sở dữ liệu sang mã ứng dụngMã để làm việc với dữ liệu của ứng dụng phải nằm ở đâu đó. Trước khi ORM phổ biến, các thủ tục lưu trữ cơ sở dữ liệu được sử dụng để đóng gói logic cơ sở dữ liệu. Với ORM, mã thao tác dữ liệu thay vào đó nằm trong cơ sở mã Python của ứng dụng. Việc bổ sung logic xử lý dữ liệu trong cơ sở mã nói chung không phải là vấn đề với thiết kế ứng dụng hợp lý, nhưng nó làm tăng tổng lượng mã Python thay vì phân tách mã giữa ứng dụng và thủ tục lưu trữ cơ sở dữ liệu Triển khai ORM PythonCó rất nhiều triển khai ORM được viết bằng Python, bao gồm Có các ORM khác, chẳng hạn như Canonical's Storm, nhưng hầu hết chúng dường như không được phát triển tích cực. Tìm hiểu thêm về các ORM hoạt động chính bên dưới ORM của DjangoKhung web Django đi kèm với mô-đun ánh xạ quan hệ đối tượng tích hợp sẵn của riêng nó, thường được gọi là "ORM Django" hoặc "ORM của Django" ORM của Django hoạt động tốt cho các hoạt động cơ sở dữ liệu đơn giản và phức tạp trung bình. Tuy nhiên, thường có những phàn nàn rằng ORM làm cho các truy vấn phức tạp phức tạp hơn nhiều so với việc viết SQL thẳng hoặc sử dụng SQLAlchemy Về mặt kỹ thuật, có thể thả xuống SQL nhưng nó liên kết các truy vấn với việc triển khai cơ sở dữ liệu cụ thể. ORM được kết hợp chặt chẽ với Django, vì vậy việc thay thế ORM mặc định bằng SQLAlchemy hiện là một giải pháp thay thế cho hack. Lưu ý rằng mặc dù có thể các phụ trợ ORM có thể hoán đổi sẽ khả dụng trong tương lai vì hiện tại có thể thay đổi công cụ mẫu để kết xuất đầu ra trong Django Vì phần lớn các dự án Django được gắn với ORM mặc định, tốt nhất bạn nên đọc các trường hợp sử dụng nâng cao và các công cụ để thực hiện công việc tốt nhất của mình trong khuôn khổ hiện có SQLAlchemy ORMSQLAlchemy là một ORM Python được đánh giá cao vì nó có mức độ trừu tượng "vừa phải" và dường như làm cho các truy vấn cơ sở dữ liệu phức tạp dễ viết hơn Django ORM trong hầu hết các trường hợp. Có cả một trang về SQLAlchemy mà bạn nên đọc nếu muốn tìm hiểu thêm về cách sử dụng thư viện nước tiểu ORMPeewee là một triển khai ORM của Python được viết là "đơn giản hơn, nhỏ hơn và dễ hack hơn" so với SQLAlchemy. Đọc toàn bộ trang Peewee để biết thêm thông tin về triển khai ORM Python ngựa conPony ORM là một ORM Python khác có sẵn dưới dạng mã nguồn mở, trong Apache 2. 0 giấy phép SQLObject ORMSQLObject là một ORM đã được phát triển nguồn mở tích cực trong hơn 14 năm, kể từ Di chuyển lược đồDi chuyển lược đồ, chẳng hạn như khi bạn cần thêm một cột mới vào bảng hiện có trong cơ sở dữ liệu của mình, về mặt kỹ thuật không phải là một phần của ORM. Tuy nhiên, vì ORM thường dẫn đến cách tiếp cận cơ sở dữ liệu (trong nhiều trường hợp khiến nhà phát triển gặp nguy hiểm), các thư viện để thực hiện di chuyển lược đồ thường đi đôi với việc sử dụng Python ORM trên các dự án ứng dụng web Di chuyển lược đồ cơ sở dữ liệu là một chủ đề phức tạp và xứng đáng có trang riêng. Hiện tại, chúng tôi sẽ gộp các tài nguyên di chuyển lược đồ trong các liên kết ORM bên dưới Tài nguyên ORM chung
Tài nguyên SQLAlchemy và PeeweeCó thể tìm thấy danh sách đầy đủ các tài nguyên SQLAlchemy và Peewee ORM trên các trang tương ứng của chúng Liên kết Django ORMCó thể tìm thấy danh sách tài nguyên được tuyển chọn trên trang tài nguyên Django ORM chuyên dụng Tài nguyên ORM PonyTất cả tài nguyên ORM Pony được liệt kê trên trang Pony ORM chuyên dụng Tài nguyên đối tượng SQLSQLObject đã có từ lâu như một dự án mã nguồn mở nhưng tiếc là không có nhiều hướng dẫn về nó. Các cuộc nói chuyện và bài viết sau đây sẽ giúp bạn bắt đầu. Nếu bạn quan tâm đến dự án và viết các tài nguyên bổ sung, hãy gửi phiếu phát hành để chúng tôi có thể thêm chúng vào danh sách này Làm cách nào để tạo API cơ sở dữ liệu bằng Python?Đây là logic chúng ta phải thực hiện. . Tìm nạp dữ liệu JSON được cung cấp cho tên người dùng, mật khẩu, tên, họ và tuổi Tạo một thể hiện của lớp Người dùng với dữ liệu được cung cấp Thêm người dùng này vào cơ sở dữ liệu và thực hiện giao dịch Trả lại thông báo cho biết người dùng đã được chèn Làm cách nào để sử dụng db trong Python?Để viết các ứng dụng cơ sở dữ liệu bằng Python, có năm bước cần làm theo. . Nhập giao diện SQL bằng lệnh sau. >>> nhập MySQLdb Thiết lập kết nối với cơ sở dữ liệu bằng lệnh sau. >>> conn=MySQLdb. kết nối (máy chủ = 'localhost', người dùng = 'root', passwd ='') Cơ sở dữ liệu DB là gìDB-API là từ viết tắt của Giao diện lập trình ứng dụng DataBase và thư viện cho phép Python kết nối với máy chủ cơ sở dữ liệu . Tùy thuộc vào thư viện DB quan hệ mà bạn sử dụng, chúng có thể có các mô-đun DB-API của riêng chúng.
Python có thể tương tác với cơ sở dữ liệu không?Python có thể được sử dụng trong các ứng dụng cơ sở dữ liệu . Một trong những cơ sở dữ liệu phổ biến nhất là MySQL. |