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ôiTạ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
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
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
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
0Bâ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
1Cái này có hoạt động không?
Bây giờ để điền vào các bảng còn lại
pip install pandas
2Kinh 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
3Mộ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
4Chí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
5Rấ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
8Hy 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
9Lư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
0Hã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
1Bâ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
2Lư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
3Chà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
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