Làm cách nào để sử dụng mệnh đề WHERE trong Python SQL?

Bạn sẽ tìm hiểu cách lấy dữ liệu từ cơ sở dữ liệu quan hệ thẳng vào quy trình máy học của mình, lưu trữ dữ liệu từ ứng dụng Python trong cơ sở dữ liệu của riêng bạn hoặc bất kỳ trường hợp sử dụng nào khác mà bạn có thể nghĩ ra

Cùng nhau chúng ta sẽ trang trải

  • Tại sao phải học cách sử dụng Python và SQL cùng nhau?
  • Cách thiết lập môi trường Python và Máy chủ MySQL của bạn
  • Kết nối với máy chủ MySQL bằng Python
  • Tạo cơ sở dữ liệu mới
  • Tạo bảng và mối quan hệ bảng
  • Điền vào bảng với dữ liệu
  • Đọc dữ liệu
  • Cập nhật hồ sơ
  • Xóa hồ sơ
  • Tạo bản ghi từ danh sách Python
  • Tạo các chức năng có thể sử dụng lại để thực hiện tất cả những điều này cho chúng tôi trong tương lai

Đó là rất nhiều thứ rất hữu ích và rất mát mẻ. Hãy đi vào nó

Một lưu ý nhanh trước khi chúng tôi bắt đầu. có một Sổ ghi chép Jupyter chứa tất cả mã được sử dụng trong hướng dẫn này có sẵn trong kho lưu trữ GitHub này. Viết mã cùng rất được khuyến khích

Cơ sở dữ liệu và mã SQL được sử dụng ở đây là tất cả từ loạt bài Giới thiệu về SQL trước đây của tôi được đăng trên Hướng tới Khoa học Dữ liệu [liên hệ với tôi nếu bạn gặp bất kỳ vấn đề nào khi xem các bài viết và tôi có thể gửi cho bạn một liên kết để xem chúng miễn phí]

Nếu bạn không quen thuộc với SQL và các khái niệm đằng sau cơ sở dữ liệu quan hệ, tôi sẽ hướng dẫn bạn về loạt bài đó [dĩ nhiên là có rất nhiều nội dung tuyệt vời có sẵn ở đây trên freeCodeCamp. ]

Tại sao lại là Python với SQL?

Đối với Nhà phân tích dữ liệu và Nhà khoa học dữ liệu, Python có nhiều lợi thế. Một loạt các thư viện nguồn mở làm cho nó trở thành một công cụ cực kỳ hữu ích cho bất kỳ Nhà phân tích dữ liệu nào

Chúng tôi có gấu trúc, NumPy và Vaex để phân tích dữ liệu, Matplotlib, seaborn và Bokeh để trực quan hóa, và TensorFlow, scikit-learning và PyTorch cho các ứng dụng học máy [cộng với nhiều, nhiều hơn nữa]

Với đường cong học tập [tương đối] dễ dàng và tính linh hoạt, không có gì ngạc nhiên khi Python là một trong những ngôn ngữ lập trình phát triển nhanh nhất hiện có

Vì vậy, nếu chúng tôi đang sử dụng Python để phân tích dữ liệu, bạn nên đặt câu hỏi - tất cả dữ liệu này đến từ đâu?

Mặc dù có rất nhiều nguồn cho bộ dữ liệu, nhưng trong nhiều trường hợp - đặc biệt là trong các doanh nghiệp doanh nghiệp - dữ liệu sẽ được lưu trữ trong cơ sở dữ liệu quan hệ. Cơ sở dữ liệu quan hệ là một cách cực kỳ hiệu quả, mạnh mẽ và được sử dụng rộng rãi để tạo, đọc, cập nhật và xóa các loại dữ liệu

Các hệ thống quản lý cơ sở dữ liệu quan hệ [RDBMS] được sử dụng rộng rãi nhất - Oracle, MySQL, Microsoft SQL Server, PostgreSQL, IBM DB2 - tất cả đều sử dụng Ngôn ngữ truy vấn có cấu trúc [SQL] để truy cập và thực hiện các thay đổi đối với dữ liệu

Lưu ý rằng mỗi RDBMS sử dụng một hương vị SQL hơi khác nhau, vì vậy mã SQL được viết cho một RDBMS thường sẽ không hoạt động trong một RDBMS khác nếu không có sửa đổi [thường khá nhỏ]. Nhưng các khái niệm, cấu trúc và hoạt động phần lớn giống hệt nhau

Điều này có nghĩa là đối với một Nhà phân tích dữ liệu đang làm việc, hiểu rõ về SQL là cực kỳ quan trọng. Biết cách sử dụng Python và SQL cùng nhau sẽ mang lại cho bạn nhiều lợi thế hơn khi làm việc với dữ liệu của bạn

Phần còn lại của bài viết này sẽ được dành để cho bạn thấy chính xác cách chúng tôi có thể làm điều đó

Bắt đầu

Yêu cầu & Cài đặt

Để viết mã theo hướng dẫn này, bạn sẽ cần thiết lập môi trường Python của riêng mình

Tôi sử dụng Anaconda, nhưng có rất nhiều cách để làm điều này. Chỉ cần google "cách cài đặt Python" nếu bạn cần trợ giúp thêm. Bạn cũng có thể sử dụng Binder để viết mã cùng với Máy tính xách tay Jupyter được liên kết

Chúng tôi sẽ sử dụng MySQL Community Server vì nó miễn phí và được sử dụng rộng rãi trong ngành. Nếu bạn đang sử dụng Windows, hướng dẫn này sẽ giúp bạn thiết lập. Đây cũng là hướng dẫn dành cho người dùng Mac và Linux [mặc dù nó có thể khác nhau tùy theo bản phân phối Linux]

Khi bạn đã thiết lập xong, chúng tôi sẽ cần để chúng giao tiếp với nhau

Để làm được điều đó, chúng ta cần cài đặt thư viện MySQL Connector Python. Để thực hiện việc này, hãy làm theo hướng dẫn hoặc chỉ sử dụng pip

pip install mysql-connector-python

Chúng tôi cũng sẽ sử dụng gấu trúc, vì vậy hãy đảm bảo rằng bạn cũng đã cài đặt nó

pip install pandas

Nhập thư viện

Như với mọi dự án bằng Python, điều đầu tiên chúng tôi muốn làm là nhập thư viện của mình

Cách tốt nhất là nhập tất cả các thư viện mà chúng ta sẽ sử dụng khi bắt đầu dự án, để những người đọc hoặc xem lại mã của chúng ta biết đại khái những gì sắp xảy ra nên không có gì ngạc nhiên

Đối với hướng dẫn này, chúng ta sẽ chỉ sử dụng hai thư viện - MySQL Connector và pandas

import mysql.connector
from mysql.connector import Error
import pandas as pd

Chúng tôi nhập chức năng Lỗi một cách riêng biệt để chúng tôi có thể dễ dàng truy cập vào chức năng đó cho các chức năng của mình

Kết nối với máy chủ MySQL

Đến thời điểm này, chúng ta nên thiết lập Máy chủ cộng đồng MySQL trên hệ thống của mình. Bây giờ chúng tôi cần viết một số mã bằng Python cho phép chúng tôi thiết lập kết nối với máy chủ đó

def create_server_connection[host_name, user_name, user_password]:
    connection = None
    try:
        connection = mysql.connector.connect[
            host=host_name,
            user=user_name,
            passwd=user_password
        ]
        print["MySQL Database connection successful"]
    except Error as err:
        print[f"Error: '{err}'"]

    return connection
Một chức năng để kết nối với Máy chủ MySQL của chúng tôi

Tạo một chức năng có thể sử dụng lại cho mã như thế này là cách tốt nhất để chúng tôi có thể sử dụng lại chức năng này nhiều lần với nỗ lực tối thiểu. Sau khi điều này được viết ra, bạn cũng có thể sử dụng lại nó trong tất cả các dự án của mình trong tương lai, vì vậy trong tương lai-bạn sẽ biết ơn

Hãy đi qua từng dòng này để chúng tôi hiểu những gì đang xảy ra ở đây

Dòng đầu tiên là chúng ta đặt tên cho hàm [create_server_connection] và đặt tên cho các đối số mà hàm đó sẽ nhận [host_name, user_name và user_password]

Dòng tiếp theo đóng mọi kết nối hiện có để máy chủ không bị nhầm lẫn với nhiều kết nối đang mở

Tiếp theo, chúng tôi sử dụng khối thử ngoại trừ Python để xử lý bất kỳ lỗi tiềm ẩn nào. Phần đầu tiên cố gắng tạo kết nối đến máy chủ bằng mysql. tư nối. connect[] sử dụng các chi tiết được chỉ định bởi người dùng trong các đối số. Nếu điều này hoạt động, hàm sẽ in một thông báo thành công nhỏ vui vẻ

Phần ngoại trừ của khối in lỗi mà Máy chủ MySQL trả về, trong trường hợp không may là có lỗi

Cuối cùng, nếu kết nối thành công, hàm sẽ trả về một đối tượng kết nối

Chúng tôi sử dụng điều này trong thực tế bằng cách gán đầu ra của hàm cho một biến, biến này sau đó trở thành đối tượng kết nối của chúng tôi. Sau đó, chúng ta có thể áp dụng các phương thức khác [chẳng hạn như con trỏ] cho nó và tạo các đối tượng hữu ích khác

connection = create_server_connection["localhost", "root", pw]
Ở đây, pw là một biến chứa mật khẩu gốc cho Máy chủ MySQL của chúng tôi dưới dạng một chuỗi

Điều này sẽ tạo ra một thông báo thành công

hoan hô

Tạo cơ sở dữ liệu mới

Bây giờ chúng tôi đã thiết lập kết nối, bước tiếp theo của chúng tôi là tạo cơ sở dữ liệu mới trên máy chủ của chúng tôi

Trong hướng dẫn này, chúng ta sẽ chỉ làm điều này một lần, nhưng một lần nữa chúng ta sẽ viết nó như một hàm có thể sử dụng lại để chúng ta có một hàm hữu ích mà chúng ta có thể sử dụng lại cho các dự án trong tương lai

def create_database[connection, query]:
    cursor = connection.cursor[]
    try:
        cursor.execute[query]
        print["Database created successfully"]
    except Error as err:
        print[f"Error: '{err}'"]

Hàm này nhận hai đối số, kết nối [đối tượng kết nối của chúng ta] và truy vấn [một truy vấn SQL mà chúng ta sẽ viết trong bước tiếp theo]. Nó thực hiện truy vấn trong máy chủ thông qua kết nối

Chúng tôi sử dụng phương thức con trỏ trên đối tượng kết nối của mình để tạo đối tượng con trỏ [Trình kết nối MySQL sử dụng mô hình lập trình hướng đối tượng, do đó, có rất nhiều đối tượng kế thừa các thuộc tính từ đối tượng cha]

Đối tượng con trỏ này có các phương thức như thực thi, execmany [mà chúng ta sẽ sử dụng trong hướng dẫn này] cùng với một số phương thức hữu ích khác

Nếu nó hữu ích, chúng ta có thể nghĩ về đối tượng con trỏ khi cung cấp cho chúng ta quyền truy cập vào con trỏ đang nhấp nháy trong cửa sổ đầu cuối của Máy chủ MySQL

Bạn biết đấy, cái này

Tiếp theo, chúng tôi xác định một truy vấn để tạo cơ sở dữ liệu và gọi hàm

Tất cả các truy vấn SQL được sử dụng trong hướng dẫn này được giải thích trong loạt bài hướng dẫn Giới thiệu về SQL của tôi và bạn có thể tìm thấy mã đầy đủ trong Jupyter Notebook được liên kết trong kho lưu trữ GitHub này, vì vậy tôi sẽ không cung cấp giải thích về chức năng của mã SQL trong phần này

Đây có lẽ là truy vấn SQL đơn giản nhất có thể, mặc dù. Nếu bạn có thể đọc tiếng Anh, bạn có thể hiểu nó làm gì

Chạy hàm create_database với các đối số như trên dẫn đến cơ sở dữ liệu có tên 'trường học' được tạo trong máy chủ của chúng tôi

Tại sao cơ sở dữ liệu của chúng tôi được gọi là 'trường học'?

cơ sở dữ liệu của chúng tôi

Sơ đồ mối quan hệ thực thể cho cơ sở dữ liệu của chúng tôi

Theo ví dụ trong loạt bài trước của tôi, chúng ta sẽ triển khai cơ sở dữ liệu cho Trường Ngôn ngữ Quốc tế - một trường đào tạo ngôn ngữ hư cấu cung cấp các bài học ngôn ngữ chuyên nghiệp cho khách hàng doanh nghiệp

Sơ đồ mối quan hệ thực thể [ERD] này trình bày các thực thể của chúng tôi [Giáo viên, Khách hàng, Khóa học và Người tham gia] và xác định mối quan hệ giữa chúng

Tất cả thông tin liên quan đến ERD là gì và những điều cần xem xét khi tạo và thiết kế cơ sở dữ liệu có thể được tìm thấy trong bài viết này

Tất cả mã SQL thô, yêu cầu cơ sở dữ liệu và dữ liệu để đi vào cơ sở dữ liệu đều có trong kho lưu trữ GitHub này, nhưng bạn cũng sẽ thấy tất cả khi chúng ta xem qua hướng dẫn này

Kết nối với cơ sở dữ liệu

Bây giờ chúng ta đã tạo một cơ sở dữ liệu trong MySQL Server, chúng ta có thể sửa đổi hàm create_server_connection để kết nối trực tiếp với cơ sở dữ liệu này

Lưu ý rằng trên thực tế, có thể - phổ biến - có nhiều cơ sở dữ liệu trên một Máy chủ MySQL, vì vậy chúng tôi muốn luôn luôn và tự động kết nối với cơ sở dữ liệu mà chúng tôi quan tâm

Chúng ta có thể làm điều này như vậy

def create_db_connection[host_name, user_name, user_password, db_name]:
    connection = None
    try:
        connection = mysql.connector.connect[
            host=host_name,
            user=user_name,
            passwd=user_password,
            database=db_name
        ]
        print["MySQL Database connection successful"]
    except Error as err:
        print[f"Error: '{err}'"]

    return connection

Đây là cùng một chức năng, nhưng bây giờ chúng ta lấy thêm một đối số - tên cơ sở dữ liệu - và chuyển nó làm đối số cho phương thức connect[]

Tạo chức năng thực thi truy vấn

Hàm cuối cùng mà chúng ta sẽ tạo [hiện tại] là một hàm cực kỳ quan trọng - hàm thực thi truy vấn. Điều này sẽ lấy các truy vấn SQL của chúng tôi, được lưu trữ trong Python dưới dạng chuỗi và chuyển chúng tới con trỏ. exec[] để thực thi chúng trên máy chủ

def execute_query[connection, query]:
    cursor = connection.cursor[]
    try:
        cursor.execute[query]
        connection.commit[]
        print["Query successful"]
    except Error as err:
        print[f"Error: '{err}'"]

Hàm này hoàn toàn giống với hàm create_database của chúng tôi trước đó, ngoại trừ việc nó sử dụng kết nối. commit[] để đảm bảo rằng các lệnh chi tiết trong các truy vấn SQL của chúng tôi được triển khai

Đây sẽ là hàm đặc biệt của chúng ta, mà chúng ta sẽ sử dụng [cùng với create_db_connection] để tạo bảng, thiết lập mối quan hệ giữa các bảng đó, điền dữ liệu vào bảng, cập nhật và xóa bản ghi trong cơ sở dữ liệu của chúng ta

Nếu bạn là chuyên gia SQL, chức năng này sẽ cho phép bạn thực thi bất kỳ và tất cả các lệnh và truy vấn phức tạp mà bạn có thể có, trực tiếp từ tập lệnh Python. Đây có thể là một công cụ rất mạnh để quản lý dữ liệu của bạn

Tạo bảng

Bây giờ chúng ta đã sẵn sàng để bắt đầu chạy các lệnh SQL vào Máy chủ của mình và bắt đầu xây dựng cơ sở dữ liệu của mình. Điều đầu tiên chúng tôi muốn làm là tạo các bảng cần thiết

Hãy bắt đầu với bảng Giáo viên của chúng tôi

________số 8_______

Trước hết, chúng tôi gán lệnh SQL của mình [được giải thích chi tiết tại đây] cho một biến có tên phù hợp

Trong trường hợp này, chúng tôi sử dụng ký hiệu trích dẫn ba lần của Python cho các chuỗi nhiều dòng để lưu trữ truy vấn SQL của mình, sau đó chúng tôi đưa nó vào hàm exec_query để thực hiện truy vấn đó

Lưu ý rằng định dạng nhiều dòng này hoàn toàn vì lợi ích của những người đọc mã của chúng tôi. Cả SQL và Python đều không 'quan tâm' nếu lệnh SQL được trải ra như thế này. Miễn là cú pháp đúng, cả hai ngôn ngữ sẽ chấp nhận nó

Tuy nhiên, vì lợi ích của những người sẽ đọc mã của bạn [ngay cả khi điều đó sẽ chỉ xảy ra trong tương lai-bạn. ] rất hữu ích khi làm điều này để làm cho mã dễ đọc và dễ hiểu hơn

Điều này cũng đúng với VIẾT HOA các toán tử trong SQL. Đây là một quy ước được sử dụng rộng rãi và được khuyến nghị mạnh mẽ, nhưng phần mềm thực tế chạy mã này không phân biệt chữ hoa chữ thường và sẽ coi 'CREATE TABLE teacher' và 'create table teacher' là các lệnh giống hệt nhau

Chạy mã này cho chúng tôi thông báo thành công. Chúng tôi cũng có thể xác minh điều này trong Máy khách dòng lệnh máy chủ MySQL

Tuyệt vời. Bây giờ hãy tạo các bảng còn lại

create_client_table = """
CREATE TABLE client [
  client_id INT PRIMARY KEY,
  client_name VARCHAR[40] NOT NULL,
  address VARCHAR[60] NOT NULL,
  industry VARCHAR[20]
];
 """

create_participant_table = """
CREATE TABLE participant [
  participant_id INT PRIMARY KEY,
  first_name VARCHAR[40] NOT NULL,
  last_name VARCHAR[40] NOT NULL,
  phone_no VARCHAR[20],
  client INT
];
"""

create_course_table = """
CREATE TABLE course [
  course_id INT PRIMARY KEY,
  course_name VARCHAR[40] NOT NULL,
  language VARCHAR[3] NOT NULL,
  level VARCHAR[2],
  course_length_weeks INT,
  start_date DATE,
  in_school BOOLEAN,
  teacher INT,
  client INT
];
"""


connection = create_db_connection["localhost", "root", pw, db]
execute_query[connection, create_client_table]
execute_query[connection, create_participant_table]
execute_query[connection, create_course_table]

Điều này tạo ra bốn bảng cần thiết cho bốn thực thể của chúng tôi

Bây giờ chúng tôi muốn xác định mối quan hệ giữa chúng và tạo thêm một bảng để xử lý mối quan hệ nhiều-nhiều giữa bảng người tham gia và khóa học [xem tại đây để biết thêm chi tiết]

Chúng tôi làm điều này theo cùng một cách

pip install pandas
0

Bây giờ các bảng của chúng ta đã được tạo, cùng với các ràng buộc thích hợp, khóa chính và quan hệ khóa ngoại

Dân số các bảng

Bước tiếp theo là thêm một số bản ghi vào các bảng. Một lần nữa, chúng tôi sử dụng exec_query để đưa các lệnh SQL hiện có của chúng tôi vào Máy chủ. Hãy bắt đầu lại với bảng Giáo viên

pip install pandas
1

Cái này có hoạt động không?

có vẻ tốt

Bây giờ để điền vào các bảng còn lại

pip install pandas
2

Kinh ngạc. Bây giờ chúng tôi đã tạo một cơ sở dữ liệu hoàn chỉnh với các quan hệ, ràng buộc và bản ghi trong MySQL, không sử dụng gì ngoài các lệnh Python

Chúng tôi đã trải qua từng bước này để giữ cho nó dễ hiểu. Nhưng đến thời điểm này, bạn có thể thấy rằng tất cả điều này có thể rất dễ dàng được ghi vào một tập lệnh Python và được thực thi trong một lệnh trong thiết bị đầu cuối. công cụ mạnh mẽ

Đọc dữ liệu

Bây giờ chúng tôi có một cơ sở dữ liệu chức năng để làm việc với. Với tư cách là Nhà phân tích dữ liệu, bạn có khả năng tiếp xúc với cơ sở dữ liệu hiện có trong các tổ chức nơi bạn làm việc. Sẽ rất hữu ích khi biết cách lấy dữ liệu ra khỏi các cơ sở dữ liệu đó để sau đó có thể đưa dữ liệu vào đường dẫn dữ liệu python của bạn. Đây là những gì chúng ta sẽ làm việc tiếp theo

Đối với điều này, chúng ta sẽ cần thêm một chức năng, lần này sử dụng con trỏ. tìm nạp [] thay vì con trỏ. làm[]. Với chức năng này, chúng tôi đang đọc dữ liệu từ cơ sở dữ liệu và sẽ không thực hiện bất kỳ thay đổi nào

pip install pandas
3

Một lần nữa, chúng ta sẽ triển khai điều này theo cách rất giống với exec_query. Hãy thử với một truy vấn đơn giản để xem nó hoạt động như thế nào

pip install pandas
4

Chính xác những gì chúng tôi đang mong đợi. Hàm này cũng hoạt động với các truy vấn phức tạp hơn, chẳng hạn như truy vấn này liên quan đến THAM GIA trên các bảng khóa học và khách hàng.

pip install pandas
5

Rất hay.

Đối với các đường dẫn dữ liệu và quy trình công việc của chúng tôi bằng Python, chúng tôi có thể muốn nhận các kết quả này ở các định dạng khác nhau để làm cho chúng hữu ích hơn hoặc sẵn sàng cho chúng tôi thao tác

Hãy xem qua một vài ví dụ để xem làm thế nào chúng ta có thể làm điều đó

Định dạng đầu ra thành một danh sách

pip install pandas
6

Định dạng đầu ra thành một danh sách các danh sách

pip install pandas
7

Định dạng đầu ra thành DataFrame của gấu trúc

Đối với các Nhà phân tích dữ liệu sử dụng Python, gấu trúc là người bạn cũ xinh đẹp và đáng tin cậy của chúng tôi. Rất đơn giản để chuyển đổi đầu ra từ cơ sở dữ liệu của chúng tôi thành DataFrame và từ đó khả năng là vô tận

pip install pandas
8

Hy vọng rằng bạn có thể nhìn thấy những khả năng đang mở ra trước mắt mình tại đây. Chỉ với một vài dòng mã, chúng tôi có thể dễ dàng trích xuất tất cả dữ liệu mà chúng tôi có thể xử lý từ cơ sở dữ liệu quan hệ nơi dữ liệu tồn tại và kéo dữ liệu đó vào các đường ống phân tích dữ liệu hiện đại của chúng tôi. Đây là công cụ thực sự hữu ích.

Cập nhật hồ sơ

Khi chúng tôi đang duy trì cơ sở dữ liệu, đôi khi chúng tôi sẽ cần thực hiện các thay đổi đối với các bản ghi hiện có. Trong phần này chúng ta sẽ xem xét làm thế nào để làm điều đó

Giả sử ILS được thông báo rằng một trong những khách hàng hiện tại của họ, Big Business Federation, đang chuyển văn phòng đến 23 Fingeriertweg, 14534 Berlin. Trong trường hợp này, người quản trị cơ sở dữ liệu [tức là chúng tôi. ] sẽ cần thực hiện một số thay đổi

Rất may, chúng ta có thể làm điều này với hàm exec_query cùng với câu lệnh SQL UPDATE

pip install pandas
9

Lưu ý rằng mệnh đề WHERE rất quan trọng ở đây. Nếu chúng tôi chạy truy vấn này mà không có mệnh đề WHERE thì tất cả địa chỉ cho tất cả các bản ghi trong bảng Khách hàng của chúng tôi sẽ được cập nhật thành 23 Fingeriertweg. Đó không phải là những gì chúng tôi đang muốn làm

Cũng lưu ý rằng chúng tôi đã sử dụng "WHERE client_id = 101" trong truy vấn CẬP NHẬT. Cũng có thể sử dụng "WHERE client_name = 'Big Business Federation'" hoặc "WHERE address = '123 Falschungstraße, 10999 Berlin'" hoặc thậm chí "WHERE address LIKE '%Falschung%'"

Điều quan trọng là mệnh đề WHERE cho phép chúng tôi xác định duy nhất bản ghi [hoặc các bản ghi] mà chúng tôi muốn cập nhật

Xóa hồ sơ

Cũng có thể sử dụng hàm exec_query của chúng tôi để xóa các bản ghi bằng cách sử dụng DELETE

Khi sử dụng SQL với cơ sở dữ liệu quan hệ, chúng ta cần cẩn thận khi sử dụng toán tử DELETE. Đây không phải là Windows, không có 'Bạn có chắc chắn muốn xóa cái này không?' . Khi chúng tôi xóa một cái gì đó, nó thực sự biến mất

Như đã nói, đôi khi chúng tôi thực sự cần phải xóa mọi thứ. Vì vậy, hãy xem xét điều đó bằng cách xóa một khóa học khỏi bảng Khóa học của chúng tôi

Trước hết, hãy tự nhắc mình những khóa học nào chúng ta có

Giả sử khóa học 20, 'Fortgeschrittenes Russisch' [tức là 'Tiếng Nga nâng cao' đối với bạn và tôi], sắp kết thúc, vì vậy chúng tôi cần xóa khóa học đó khỏi cơ sở dữ liệu của mình

Đến giai đoạn này, bạn sẽ không ngạc nhiên chút nào với cách chúng tôi thực hiện việc này - lưu lệnh SQL dưới dạng một chuỗi, sau đó đưa nó vào hàm exec_query đặc biệt của chúng tôi

import mysql.connector
from mysql.connector import Error
import pandas as pd
0

Hãy kiểm tra để xác nhận rằng có tác dụng mong muốn

'Tiếng Nga nâng cao' đã biến mất, như chúng ta mong đợi

Thao tác này cũng hoạt động với việc xóa toàn bộ cột bằng DROP COLUMN và toàn bộ bảng bằng lệnh DROP TABLE, nhưng chúng tôi sẽ không đề cập đến những điều đó trong hướng dẫn này

Tuy nhiên, hãy tiếp tục và thử nghiệm với chúng - không thành vấn đề nếu bạn xóa một cột hoặc bảng khỏi cơ sở dữ liệu cho một trường học hư cấu và bạn nên làm quen với các lệnh này trước khi chuyển sang môi trường sản xuất

Ôi CRUD

Đến thời điểm này, chúng tôi hiện có thể hoàn thành bốn thao tác chính để lưu trữ dữ liệu liên tục

Chúng tôi đã học được cách

  • Tạo - cơ sở dữ liệu, bảng và bản ghi hoàn toàn mới
  • Đọc - trích xuất dữ liệu từ cơ sở dữ liệu và lưu trữ dữ liệu đó ở nhiều định dạng
  • Cập nhật - thay đổi các bản ghi hiện có trong cơ sở dữ liệu
  • Xóa - xóa các bản ghi không còn cần thiết

Đây là những điều tuyệt vời hữu ích để có thể làm

Trước khi kết thúc mọi thứ ở đây, chúng ta có thêm một kỹ năng rất hữu ích để học

Tạo bản ghi từ danh sách

Chúng ta đã thấy khi điền các bảng của mình, chúng ta có thể sử dụng lệnh SQL INSERT trong hàm exec_query để chèn các bản ghi vào cơ sở dữ liệu của mình

Cho rằng chúng tôi đang sử dụng Python để thao tác cơ sở dữ liệu SQL của mình, sẽ rất hữu ích nếu có thể lấy cấu trúc dữ liệu Python [chẳng hạn như danh sách] và chèn trực tiếp vào cơ sở dữ liệu của chúng tôi

Điều này có thể hữu ích khi chúng tôi muốn lưu trữ nhật ký hoạt động của người dùng trên ứng dụng truyền thông xã hội mà chúng tôi đã viết bằng Python hoặc đầu vào từ người dùng vào Wiki mà chúng tôi đã tạo chẳng hạn. Có nhiều cách sử dụng có thể cho điều này như bạn có thể nghĩ đến.  

Phương pháp này cũng an toàn hơn nếu cơ sở dữ liệu của chúng tôi mở cho người dùng của chúng tôi tại bất kỳ thời điểm nào, vì nó giúp ngăn chặn các cuộc tấn công SQL Injection, có thể làm hỏng hoặc thậm chí phá hủy toàn bộ cơ sở dữ liệu của chúng tôi

Để làm điều này, chúng ta sẽ viết một hàm sử dụng phương thức execmany[], thay vì phương thức exec[] đơn giản hơn mà chúng ta đã sử dụng cho đến nay

import mysql.connector
from mysql.connector import Error
import pandas as pd
1

Bây giờ chúng ta có chức năng, chúng ta cần xác định một lệnh SQL ['sql'] và một danh sách chứa các giá trị mà chúng ta muốn nhập vào cơ sở dữ liệu ['val']. Các giá trị phải được lưu trữ dưới dạng danh sách các bộ dữ liệu, đây là cách khá phổ biến để lưu trữ dữ liệu trong Python

Để thêm hai giáo viên mới vào cơ sở dữ liệu, chúng ta có thể viết một số mã như thế này

import mysql.connector
from mysql.connector import Error
import pandas as pd
2

Lưu ý ở đây rằng trong mã 'sql', chúng tôi sử dụng '%s' làm trình giữ chỗ cho giá trị của chúng tôi. Sự tương đồng với trình giữ chỗ '%s' cho một chuỗi trong python chỉ là ngẫu nhiên [và nói thẳng ra là rất khó hiểu], chúng tôi muốn sử dụng '%s' cho tất cả các loại dữ liệu [chuỗi, int, ngày, v.v.] với MySQL Python

Bạn có thể thấy một số câu hỏi trên Stackoverflow nơi ai đó đã trở nên bối rối và cố gắng sử dụng trình giữ chỗ '%d' cho số nguyên vì họ đã quen làm điều này trong Python. Điều này sẽ không hoạt động ở đây - chúng tôi cần sử dụng '%s' cho mỗi cột mà chúng tôi muốn thêm giá trị vào

Sau đó, hàm execmany lấy từng bộ trong danh sách 'val' của chúng ta và chèn giá trị liên quan cho cột đó vào vị trí của trình giữ chỗ và thực thi lệnh SQL cho từng bộ có trong danh sách

Điều này có thể được thực hiện cho nhiều hàng dữ liệu, miễn là chúng được định dạng chính xác. Trong ví dụ của chúng tôi, chúng tôi sẽ chỉ thêm hai giáo viên mới, nhằm mục đích minh họa, nhưng về nguyên tắc, chúng tôi có thể thêm bao nhiêu tùy thích

Hãy tiếp tục và thực hiện truy vấn này và thêm giáo viên vào cơ sở dữ liệu của chúng tôi

import mysql.connector
from mysql.connector import Error
import pandas as pd
3

Chào mừng đến với ILS, Hank và Sue.

Đây là một chức năng vô cùng hữu ích khác, cho phép chúng tôi lấy dữ liệu được tạo trong các tập lệnh và ứng dụng Python của chúng tôi và nhập chúng trực tiếp vào cơ sở dữ liệu của chúng tôi

Phần kết luận

Chúng tôi đã bao phủ rất nhiều nền tảng trong hướng dẫn này

Chúng ta đã học cách sử dụng Python và MySQL Connector để tạo một cơ sở dữ liệu hoàn toàn mới trong MySQL Server, tạo các bảng trong cơ sở dữ liệu đó, xác định mối quan hệ giữa các bảng đó và điền dữ liệu vào chúng

Chúng tôi đã đề cập đến cách Tạo, Đọc, Cập nhật và Xóa dữ liệu trong cơ sở dữ liệu của chúng tôi

Chúng tôi đã xem xét cách trích xuất dữ liệu từ cơ sở dữ liệu hiện có và tải chúng vào DataFrames của gấu trúc, sẵn sàng để phân tích và tiếp tục làm việc tận dụng tất cả các khả năng do ngăn xếp PyData cung cấp

Đi theo một hướng khác, chúng ta cũng đã học cách lấy dữ liệu do các tập lệnh và ứng dụng Python của chúng ta tạo ra, đồng thời ghi chúng vào cơ sở dữ liệu nơi chúng có thể được lưu trữ an toàn để truy xuất và thao tác sau này

Tôi hy vọng hướng dẫn này đã giúp bạn thấy cách chúng ta có thể sử dụng Python và SQL cùng nhau để có thể thao tác dữ liệu hiệu quả hơn nữa

Nếu bạn muốn xem thêm các dự án và công việc của tôi, vui lòng truy cập trang web của tôi tại craigdoesdata. de. Nếu bạn có bất kỳ phản hồi nào về hướng dẫn này, vui lòng liên hệ trực tiếp với tôi - mọi phản hồi đều được đón nhận nồng nhiệt

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

Craig Dickson

Nhà phân tích dữ liệu, có trụ sở tại Berlin, Đức. Python, SQL, Tableau, v.v. Anh ấy / anh ấy

Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Chúng ta có thể sử dụng mệnh đề WHERE trong SQL không?

Mệnh đề WHERE được sử dụng để lọc các bản ghi. Nó được sử dụng để chỉ trích xuất những bản ghi đáp ứng một điều kiện cụ thể

Tương đương với mệnh đề WHERE trong Python là gì?

Từ khóa LIKE có thể được sử dụng trong mệnh đề WHERE để kiểm tra xem một cột có khớp với mẫu không. Trong gấu trúc, chúng ta có thể sử dụng mô-đun re gốc của python cho các biểu thức chính quy để thực hiện điều tương tự hoặc thậm chí nhiều hơn vì mô-đun re của python cho phép kiểm tra một tập hợp các mẫu phong phú hơn thay vì LIKE của SQL.

Tôi có thể sử dụng biến Python trong truy vấn SQL không?

Chúng ta thường cần chuyển các biến cho truy vấn chọn SQL trong mệnh đề where để kiểm tra một số điều kiện. Trong biểu mẫu đăng ký người dùng, người dùng nhập thông tin chi tiết của mình. Bạn có thể lấy các giá trị đó trong biến Python và chèn chúng vào bảng .

Tại sao mệnh đề WHERE của tôi không hoạt động trong SQL?

Kiểm tra khoảng trắng ở đầu hoặc cuối trong khóa và giá trị thuộc tính . Khoảng trắng ở đầu hoặc ở cuối trong các thuộc tính có thể khiến mệnh đề WHERE có vẻ không hoạt động và đây thường là vấn đề với dữ liệu trong biểu đồ chứ không phải do chính truy vấn.

Chủ Đề