Làm cách nào để truy vấn sql trong python?
Tất cả các ứng dụng phần mềm đều tương tác với dữ liệu, phổ biến nhất là thông qua hệ thống quản lý cơ sở dữ liệu (DBMS). Một số ngôn ngữ lập trình đi kèm với các mô-đun mà bạn có thể sử dụng để tương tác với DBMS, trong khi các ngôn ngữ lập trình khác yêu cầu sử dụng các gói của bên thứ ba. Trong hướng dẫn này, bạn sẽ khám phá các thư viện Python SQL khác nhau mà bạn có thể sử dụng. Bạn sẽ phát triển một ứng dụng đơn giản để tương tác với cơ sở dữ liệu SQLite, MySQL và PostgreSQL Show Trong hướng dẫn này, bạn sẽ học cách
Để tận dụng tối đa hướng dẫn này, bạn nên có kiến thức về Python, SQL cơ bản và làm việc với các hệ thống quản lý cơ sở dữ liệu. Bạn cũng có thể tải xuống và nhập các gói bằng Python, đồng thời biết cách cài đặt và chạy các máy chủ cơ sở dữ liệu khác nhau cục bộ hoặc từ xa Tải xuống PDF miễn phí. Bảng cheat Python 3 Hiểu lược đồ cơ sở dữ liệuTrong hướng dẫn này, bạn sẽ phát triển một cơ sở dữ liệu rất nhỏ cho ứng dụng truyền thông xã hội. Cơ sở dữ liệu sẽ bao gồm bốn bảng
Sơ đồ cấp cao của lược đồ cơ sở dữ liệu được hiển thị bên dưới Cả 5 và 6 sẽ có mối quan hệ một-nhiều vì một người dùng có thể thích nhiều bài đăng. Tương tự, một người dùng có thể đăng nhiều bình luận và một bài đăng cũng có thể có nhiều bình luận. Vì vậy, cả 5 và 6 cũng sẽ có mối quan hệ một-nhiều với bảng 7. Điều này cũng áp dụng cho bảng 8, vì vậy cả 5 và 6 sẽ có mối quan hệ một-nhiều với bảng 8Loại bỏ các quảng cáoSử dụng thư viện Python SQL để kết nối với cơ sở dữ liệuTrước khi bạn tương tác với bất kỳ cơ sở dữ liệu nào thông qua Thư viện SQL Python, bạn phải kết nối với cơ sở dữ liệu đó. Trong phần này, bạn sẽ thấy cách kết nối với cơ sở dữ liệu SQLite, MySQL và PostgreSQL từ bên trong ứng dụng Python Ghi chú. Bạn sẽ cần thiết lập và chạy các máy chủ MySQL và PostgreSQL trước khi thực thi các tập lệnh trong phần cơ sở dữ liệu MySQL và PostgreSQL. Để có phần giới thiệu nhanh về cách khởi động máy chủ MySQL, hãy xem phần MySQL của Bắt đầu dự án Django. Để tìm hiểu cách tạo cơ sở dữ liệu trong PostgreSQL, hãy xem phần Thiết lập cơ sở dữ liệu của Ngăn chặn các cuộc tấn công tiêm nhiễm SQL bằng Python Bạn nên tạo ba tệp Python khác nhau để bạn có một tệp cho mỗi cơ sở dữ liệu trong ba cơ sở dữ liệu. Bạn sẽ thực thi tập lệnh cho từng cơ sở dữ liệu trong tệp tương ứng của nó SQLiteSQLite có lẽ là cơ sở dữ liệu đơn giản nhất để kết nối với ứng dụng Python vì bạn không cần cài đặt bất kỳ mô-đun Python SQL bên ngoài nào để làm như vậy. Theo mặc định, bản cài đặt Python của bạn chứa thư viện Python SQL có tên là 38 mà bạn có thể sử dụng để tương tác với cơ sở dữ liệu SQLiteHơn nữa, cơ sở dữ liệu SQLite không có máy chủ và độc lập, vì chúng đọc và ghi dữ liệu vào một tệp. Điều này có nghĩa là, không giống như MySQL và PostgreSQL, bạn thậm chí không cần cài đặt và chạy máy chủ SQLite để thực hiện các thao tác cơ sở dữ liệu Đây là cách bạn sử dụng 38 để kết nối với cơ sở dữ liệu SQLite trong Python 5Đây là cách mã này hoạt động
76 trả về một đối tượng 77, đối tượng này sẽ được trả về bởi 78. Đối tượng 77 này có thể được sử dụng để thực hiện các truy vấn trên cơ sở dữ liệu SQLite. Đoạn script sau tạo kết nối đến cơ sở dữ liệu SQLite 6Khi bạn thực thi đoạn mã trên, bạn sẽ thấy rằng tệp cơ sở dữ liệu 70 được tạo trong thư mục gốc. Lưu ý rằng bạn có thể thay đổi vị trí để phù hợp với thiết lập của mìnhmysqlKhông giống như SQLite, không có mô-đun Python SQL mặc định nào mà bạn có thể sử dụng để kết nối với cơ sở dữ liệu MySQL. Thay vào đó, bạn sẽ cần cài đặt trình điều khiển Python SQL cho MySQL để tương tác với cơ sở dữ liệu MySQL từ bên trong ứng dụng Python. Một trình điều khiển như vậy là 71. Bạn có thể tải xuống mô-đun Python SQL này với 72 0Lưu ý rằng MySQL là một hệ thống quản lý cơ sở dữ liệu dựa trên máy chủ. Một máy chủ MySQL có thể có nhiều cơ sở dữ liệu. Không giống như SQLite, nơi tạo kết nối tương đương với tạo cơ sở dữ liệu, cơ sở dữ liệu MySQL có quy trình hai bước để tạo cơ sở dữ liệu
Định nghĩa một hàm kết nối với máy chủ cơ sở dữ liệu MySQL và trả về đối tượng kết nối 1Trong đoạn mã trên, bạn xác định một hàm 78 chấp nhận ba tham số
Mô-đun SQL của 74 chứa một phương thức 73 mà bạn sử dụng trong dòng 7 để kết nối với máy chủ cơ sở dữ liệu MySQL. Khi kết nối được thiết lập, đối tượng 77 được trả về chức năng gọi. Cuối cùng, ở dòng 18, bạn gọi 78 với tên máy chủ, tên người dùng và mật khẩuCho đến nay, bạn chỉ mới thiết lập kết nối. Cơ sở dữ liệu chưa được tạo. Để làm điều này, bạn sẽ xác định một hàm khác là 78 chấp nhận hai tham số
Đây là chức năng này trông như thế nào 1Để thực hiện truy vấn, bạn sử dụng đối tượng 02. 01 được thực thi được chuyển đến 04 ở định dạng chuỗiTạo cơ sở dữ liệu có tên 05 cho ứng dụng truyền thông xã hội của bạn trong máy chủ cơ sở dữ liệu MySQL
Bây giờ bạn đã tạo cơ sở dữ liệu 05 trên máy chủ cơ sở dữ liệu. Tuy nhiên, đối tượng 77 được trả về bởi 78 được kết nối với máy chủ cơ sở dữ liệu MySQL. Bạn cần kết nối với cơ sở dữ liệu 05. Để làm như vậy, bạn có thể sửa đổi 78 như sau 3Bạn có thể thấy ở dòng 8 rằng 78 hiện chấp nhận một tham số bổ sung có tên là 602. Tham số này chỉ định tên của cơ sở dữ liệu mà bạn muốn kết nối với. Bạn có thể nhập tên của cơ sở dữ liệu mà bạn muốn kết nối khi gọi hàm này 7Đoạn script trên gọi thành công 78 và kết nối với cơ sở dữ liệu 05Loại bỏ các quảng cáoPostgreSQLGiống như MySQL, không có thư viện Python SQL mặc định mà bạn có thể sử dụng để tương tác với cơ sở dữ liệu PostgreSQL. Thay vào đó, bạn cần cài đặt trình điều khiển Python SQL của bên thứ ba để tương tác với PostgreSQL. Một trình điều khiển Python SQL như vậy cho PostgreSQL là 605. Thực hiện lệnh sau trên thiết bị đầu cuối của bạn để cài đặt mô-đun SQL Python 605 7Giống như cơ sở dữ liệu SQLite và MySQL, bạn sẽ xác định 78 để tạo kết nối với cơ sở dữ liệu PostgreSQL của mình 0Bạn sử dụng 608 để kết nối với máy chủ PostgreSQL từ bên trong ứng dụng Python của mìnhSau đó, bạn có thể sử dụng 78 để tạo kết nối tới cơ sở dữ liệu PostgreSQL. Trước tiên, bạn sẽ tạo kết nối với cơ sở dữ liệu mặc định 610 bằng cách sử dụng chuỗi sau 60Tiếp theo, bạn phải tạo cơ sở dữ liệu 05 bên trong cơ sở dữ liệu 610 mặc định. Bạn có thể định nghĩa một hàm để thực thi bất kỳ truy vấn SQL nào trong PostgreSQL. Dưới đây, bạn định nghĩa 78 để tạo cơ sở dữ liệu mới trong máy chủ cơ sở dữ liệu PostgreSQL 61Sau khi chạy đoạn mã trên, bạn sẽ thấy cơ sở dữ liệu 05 trong máy chủ cơ sở dữ liệu PostgreSQL của mìnhTrước khi bạn thực hiện các truy vấn trên cơ sở dữ liệu 05, bạn cần kết nối với nó 62Khi bạn thực thi đoạn mã trên, kết nối sẽ được thiết lập với cơ sở dữ liệu 05 nằm trong máy chủ cơ sở dữ liệu 610. Ở đây, 618 đề cập đến địa chỉ IP máy chủ cơ sở dữ liệu và 619 đề cập đến số cổng của máy chủ cơ sở dữ liệuTạo bảngTrong phần trước, bạn đã biết cách kết nối với máy chủ cơ sở dữ liệu SQLite, MySQL và PostgreSQL bằng các thư viện Python SQL khác nhau. Bạn đã tạo cơ sở dữ liệu 05 trên cả ba máy chủ cơ sở dữ liệu. Trong phần này, bạn sẽ thấy cách tạo các bảng bên trong ba cơ sở dữ liệu nàyNhư đã thảo luận trước đó, bạn sẽ tạo bốn bảng
Bạn sẽ bắt đầu với SQLite SQLiteĐể thực hiện các truy vấn trong SQLite, hãy sử dụng 04. Trong phần này, bạn sẽ định nghĩa một hàm 626 sử dụng phương thức này. Hàm của bạn sẽ chấp nhận đối tượng 77 và chuỗi truy vấn mà bạn sẽ chuyển đến 04 629 có thể thực hiện bất kỳ truy vấn nào được truyền cho nó dưới dạng chuỗi. Bạn sẽ sử dụng phương pháp này để tạo bảng trong phần này. Trong các phần sắp tới, bạn cũng sẽ sử dụng phương pháp này để thực hiện các truy vấn cập nhật và xóaGhi chú. Tập lệnh này sẽ được thực thi trong cùng một tệp mà bạn đã tạo kết nối cho cơ sở dữ liệu SQLite của mình Đây là định nghĩa chức năng của bạn 63Mã này cố thực thi 01 đã cho và in thông báo lỗi nếu cầnTiếp theo, viết truy vấn của bạn 64Điều này nói để tạo một bảng 5 với năm cột sau
Cuối cùng, bạn sẽ gọi 626 để tạo bảng. Bạn sẽ chuyển vào đối tượng 77 mà bạn đã tạo trong phần trước, cùng với chuỗi 639 chứa truy vấn tạo bảng 65Truy vấn sau đây được sử dụng để tạo bảng 6 66Vì có mối quan hệ một-nhiều giữa 5 và 6, nên bạn có thể thấy khóa ngoại 643 trong bảng 6 tham chiếu đến cột 632 trong bảng 5. Thực thi đoạn script sau để tạo bảng 6 67Cuối cùng, bạn có thể tạo các bảng 7 và 8 bằng tập lệnh sau 68Bạn có thể thấy rằng việc tạo bảng trong SQLite rất giống với việc sử dụng SQL thô. Tất cả những gì bạn phải làm là lưu trữ truy vấn trong một biến chuỗi và sau đó chuyển biến đó tới 04Loại bỏ các quảng cáomysqlBạn sẽ sử dụng mô-đun SQL của 71 Python để tạo các bảng trong MySQL. Giống như với SQLite, bạn cần chuyển truy vấn của mình tới 04, truy vấn này được trả về bằng cách gọi 653 trên đối tượng 77. Bạn có thể tạo một hàm khác 626 chấp nhận chuỗi 77 và 01 69Ở dòng 4, bạn chuyển 01 đến 04Bây giờ bạn có thể tạo bảng 5 của mình bằng chức năng này 00Truy vấn để triển khai quan hệ khóa ngoại trong MySQL hơi khác so với SQLite. Hơn nữa, MySQL sử dụng từ khóa 661 (so với từ khóa 662 của SQLite) để tạo các cột trong đó các giá trị được tự động tăng lên khi bản ghi mới được chèn vàoTập lệnh sau tạo bảng 6, chứa khóa ngoại 643 tham chiếu cột 632 của bảng 5 01Tương tự, để tạo các bảng 7 và 8, bạn có thể chuyển các truy vấn 669 tương ứng tới 626PostgreSQLGiống như cơ sở dữ liệu SQLite và MySQL, đối tượng 77 được trả về bởi 608 chứa đối tượng 02. Bạn có thể sử dụng 04 để thực thi các truy vấn Python SQL trên cơ sở dữ liệu PostgreSQL của mìnhXác định hàm 626 02Bạn có thể sử dụng chức năng này để tạo bảng, chèn bản ghi, sửa đổi bản ghi và xóa bản ghi trong cơ sở dữ liệu PostgreSQL của mình Bây giờ hãy tạo bảng 5 bên trong cơ sở dữ liệu 05 03Bạn có thể thấy truy vấn tạo bảng 5 trong PostgreSQL hơi khác so với SQLite và MySQL. Ở đây, từ khóa 679 được sử dụng để tạo các cột tăng tự động. Nhớ lại rằng MySQL sử dụng từ khóa 661Ngoài ra, tham chiếu khóa ngoại cũng được chỉ định khác, như được hiển thị trong tập lệnh sau tạo bảng 6 04Để tạo bảng 7, bạn sẽ phải viết một truy vấn 669 cho bảng 7 và chuyển nó tới 626. Quá trình tạo bảng 8 cũng giống như vậy. Bạn chỉ phải sửa đổi truy vấn 669 để tạo bảng 8 thay vì bảng 7Loại bỏ các quảng cáoChèn bản ghiTrong phần trước, bạn đã biết cách tạo bảng trong cơ sở dữ liệu SQLite, MySQL và PostgreSQL bằng cách sử dụng các mô-đun Python SQL khác nhau. Trong phần này, bạn sẽ thấy cách chèn bản ghi vào bảng của mình SQLiteĐể chèn bản ghi vào cơ sở dữ liệu SQLite của bạn, bạn có thể sử dụng cùng một hàm 626 mà bạn đã sử dụng để tạo bảng. Trước tiên, bạn phải lưu trữ truy vấn 691 của mình trong một chuỗi. Sau đó, bạn có thể truyền đối tượng 77 và chuỗi 01 cho 626. Hãy chèn năm bản ghi vào bảng 5 05Vì bạn đặt cột 632 thành tự động tăng nên bạn không cần chỉ định giá trị của cột 632 cho các 5 này. Bảng 5 sẽ tự động điền năm bản ghi này với các giá trị 632 từ 001 đến 002Bây giờ hãy chèn sáu bản ghi vào bảng 6 06Điều quan trọng cần đề cập là cột 643 của bảng 6 là khóa ngoại tham chiếu cột 632 của bảng 5. Điều này có nghĩa là cột 643 phải chứa một giá trị đã tồn tại trong cột 632 của bảng 5. Nếu nó không tồn tại, thì bạn sẽ thấy lỗiTương tự, đoạn script sau chèn các bản ghi vào bảng 7 và 8 07Trong cả hai trường hợp, bạn lưu trữ truy vấn 691 của mình dưới dạng một chuỗi và thực hiện nó với 626mysqlCó hai cách để chèn bản ghi vào cơ sở dữ liệu MySQL từ ứng dụng Python. Cách tiếp cận đầu tiên tương tự như SQLite. Bạn có thể lưu trữ truy vấn 691 trong một chuỗi và sau đó sử dụng 04 để chèn bản ghiTrước đó, bạn đã xác định hàm bao bọc 626 mà bạn đã sử dụng để chèn bản ghi. Bây giờ bạn có thể sử dụng chức năng tương tự này để chèn các bản ghi vào bảng MySQL của mình. Đoạn script sau chèn các bản ghi vào bảng 5 bằng cách sử dụng 626 08Cách tiếp cận thứ hai sử dụng 020, chấp nhận hai tham số
Xem ví dụ sau, chèn hai bản ghi vào bảng 8 09Việc bạn chọn cách tiếp cận nào để chèn bản ghi vào bảng MySQL của mình là tùy thuộc vào bạn. Nếu bạn là chuyên gia về SQL, thì bạn có thể sử dụng 629. Nếu bạn không quen thuộc lắm với SQL, thì bạn có thể sử dụng 023 sẽ đơn giản hơn. Với một trong hai cách tiếp cận, bạn có thể chèn thành công các bản ghi vào các bảng 6, 7 và 8Loại bỏ các quảng cáoPostgreSQLTrong phần trước, bạn đã thấy hai cách tiếp cận để chèn bản ghi vào bảng cơ sở dữ liệu SQLite. Cái đầu tiên sử dụng truy vấn chuỗi SQL và cái thứ hai sử dụng 023. 605 tuân theo cách tiếp cận thứ hai này, mặc dù 629 được sử dụng để thực hiện truy vấn dựa trên trình giữ chỗBạn chuyển truy vấn SQL với trình giữ chỗ và danh sách bản ghi tới 629. Mỗi bản ghi trong danh sách sẽ là một bộ, trong đó các giá trị của bộ tương ứng với các giá trị cột trong bảng cơ sở dữ liệu. Đây là cách bạn có thể chèn bản ghi người dùng vào bảng 5 trong cơ sở dữ liệu PostgreSQL 10Đoạn script trên tạo một danh sách 5 chứa năm bản ghi người dùng ở dạng bộ dữ liệu. Tiếp theo, bạn tạo một chuỗi giữ chỗ với năm phần tử giữ chỗ ( 033) tương ứng với năm bản ghi người dùng. Chuỗi giữ chỗ được nối với truy vấn chèn các bản ghi vào bảng 5. Cuối cùng, chuỗi truy vấn và hồ sơ người dùng được chuyển đến 629. Đoạn script trên đã chèn thành công năm bản ghi vào bảng 5Hãy xem một ví dụ khác về chèn bản ghi vào bảng PostgreSQL. Đoạn script sau chèn các bản ghi vào bảng 6 11Bạn có thể chèn bản ghi vào bảng 7 và 8 với cùng một cách tiếp cậnChọn bản ghiTrong phần này, bạn sẽ thấy cách chọn bản ghi từ các bảng cơ sở dữ liệu bằng cách sử dụng các mô-đun Python SQL khác nhau. Đặc biệt, bạn sẽ thấy cách thực hiện các truy vấn 040 trên cơ sở dữ liệu SQLite, MySQL và PostgreSQL của mìnhSQLiteĐể chọn bản ghi bằng SQLite, bạn có thể sử dụng lại 04. Tuy nhiên, sau khi hoàn thành việc này, bạn sẽ cần gọi số 042. Phương thức này trả về một danh sách các bộ trong đó mỗi bộ được ánh xạ tới hàng tương ứng trong các bản ghi đã truy xuấtĐể đơn giản hóa quy trình, bạn có thể tạo một hàm 043 12Hàm này chấp nhận đối tượng 77 và truy vấn 040 và trả về bản ghi đã chọn
create_database_query = "CREATE DATABASE sm_app"
create_database(connection, create_database_query)
|