Một trong những niềm vui lớn nhất của tôi với tư cách là một nhà phát triển là tìm hiểu cách các công nghệ khác nhau giao nhau.
Trong nhiều năm, tôi đã có cơ hội làm việc với các loại phần mềm và công cụ khác nhau. Trong số nhiều công cụ tôi đã sử dụng, Python và Ngôn ngữ truy vấn có cấu trúc (SQL) là hai trong số những công cụ yêu thích của tôi.
Trong bài viết này, tôi sẽ chia sẻ với bạn cách Python và các cơ sở dữ liệu SQL khác nhau tương tác.
Tôi sẽ nói về các cơ sở dữ liệu phổ biến nhất, SQLite, MySQL và PostgreSQL. Tôi sẽ giải thích sự khác biệt chính của từng cơ sở dữ liệu và các trường hợp sử dụng tương ứng. Và tôi sẽ kết thúc bài viết với một số mã Python.
Đoạn mã sẽ chỉ cho bạn cách viết truy vấn SQL để lấy dữ liệu từ cơ sở dữ liệu PostgreSQL và lưu trữ dữ liệu trong khung dữ liệu gấu trúc.
Nếu bạn không quen thuộc với cơ sở dữ liệu quan hệ (RDBMS), tôi khuyên bạn nên xem bài viết của Sameer về thuật ngữ RDBMS cơ bản tại đây. Phần còn lại của bài viết sẽ sử dụng các thuật ngữ được tham chiếu trong bài viết của Sameer.
Cơ sở dữ liệu SQL phổ biến
SQLite
SQLite được biết đến nhiều nhất là một cơ sở dữ liệu tích hợp. Điều này có nghĩa là bạn không phải cài đặt thêm một ứng dụng hoặc sử dụng một máy chủ riêng để chạy cơ sở dữ liệu.
Nếu bạn đang tạo MVP hoặc không cần nhiều dung lượng lưu trữ dữ liệu, bạn sẽ muốn sử dụng cơ sở dữ liệu SQLite.
Ưu điểm là bạn có thể di chuyển nhanh hơn với cơ sở dữ liệu SQLite so với MySQL và PostgreSQL. Điều đó nói rằng, bạn sẽ gặp khó khăn với chức năng hạn chế. Bạn sẽ không thể tùy chỉnh các tính năng hoặc thêm rất nhiều chức năng cho nhiều người dùng.
MySQL / PostgreSQL
Có sự khác biệt rõ ràng giữa MySQL và PostgreSQL. Điều đó nói rằng, với bối cảnh của bài báo, chúng phù hợp với một danh mục tương tự.
Cả hai loại cơ sở dữ liệu đều tuyệt vời cho các giải pháp doanh nghiệp. Nếu bạn cần mở rộng quy mô nhanh, MySQL và PostgreSQL là lựa chọn tốt nhất cho bạn. Họ sẽ cung cấp cơ sở hạ tầng lâu dài và tăng cường bảo mật cho bạn.
Một lý do khác khiến chúng tuyệt vời cho các doanh nghiệp là chúng có thể xử lý các hoạt động hiệu suất cao. Các câu lệnh chèn, cập nhật và lựa chọn dài hơn cần rất nhiều sức mạnh tính toán. Bạn sẽ có thể viết những câu lệnh đó với độ trễ ít hơn so với những gì cơ sở dữ liệu SQLite sẽ cung cấp cho bạn.
Tại sao nên kết nối Python và cơ sở dữ liệu SQL?
Bạn có thể tự hỏi, "tại sao tôi nên quan tâm đến việc kết nối Python và cơ sở dữ liệu SQL?"
Có nhiều trường hợp sử dụng khi ai đó muốn kết nối Python với cơ sở dữ liệu SQL. Như tôi đã đề cập trước đó, bạn có thể đang làm việc trên một ứng dụng web. Trong trường hợp này, bạn cần kết nối cơ sở dữ liệu SQL để có thể lưu trữ dữ liệu đến từ ứng dụng web.
Có lẽ bạn làm việc trong lĩnh vực kỹ thuật dữ liệu và bạn cần xây dựng một đường dẫn ETL tự động. Kết nối Python với cơ sở dữ liệu SQL sẽ cho phép bạn sử dụng Python vì khả năng tự động hóa của nó. Bạn cũng sẽ có thể giao tiếp giữa các nguồn dữ liệu khác nhau. Bạn sẽ không phải chuyển đổi giữa các ngôn ngữ lập trình khác nhau.
Kết nối Python và cơ sở dữ liệu SQL cũng sẽ giúp công việc khoa học dữ liệu của bạn thuận tiện hơn. Bạn sẽ có thể sử dụng các kỹ năng Python của mình để thao tác dữ liệu từ cơ sở dữ liệu SQL. Bạn sẽ không cần tệp CSV.
Cách kết nối cơ sở dữ liệu Python và SQL
Cơ sở dữ liệu Python và SQL kết nối thông qua các thư viện Python tùy chỉnh. Bạn có thể nhập các thư viện này vào tập lệnh Python của mình.
Các thư viện Python dành riêng cho cơ sở dữ liệu đóng vai trò như các hướng dẫn bổ sung. Các hướng dẫn này hướng dẫn máy tính của bạn về cách nó có thể tương tác với cơ sở dữ liệu SQL của bạn. Nếu không, mã Python của bạn sẽ là ngôn ngữ nước ngoài đối với cơ sở dữ liệu mà bạn đang cố gắng kết nối.
Cách thiết lập dự án
Hãy lấy ví dụ cơ sở dữ liệu PostgreSQL, AWS Redshift. Đầu tiên, bạn sẽ muốn nhập thư viện psycopg. Đó là một thư viện Python phổ quát cho cơ sở dữ liệu PostgreSQL.
#Library for connecting to AWS Redshift
import psycopg
#Library for reading the config file, which is in JSON
import json
#Data manipulation library
import pandas as pd
Bạn sẽ nhận thấy chúng tôi cũng đã nhập thư viện JSON và pandas. Chúng tôi đã nhập JSON vì tạo tệp cấu hình JSON là một cách an toàn để lưu trữ thông tin đăng nhập cơ sở dữ liệu của bạn. Chúng tôi không muốn bất cứ ai khác để mắt đến chúng!
Thư viện gấu trúc sẽ cho phép bạn sử dụng tất cả các khả năng thống kê của gấu trúc cho tập lệnh Python của bạn. Trong trường hợp này, thư viện sẽ cho phép Python lưu trữ dữ liệu mà truy vấn SQL của bạn trả về vào một khung dữ liệu.
Tiếp theo, bạn sẽ muốn truy cập tệp cấu hình của mình. json.load()
hàm đọc tệp JSON để bạn có thể truy cập thông tin đăng nhập cơ sở dữ liệu của mình trong bước tiếp theo.
config_file = open(r"C:\Users\yourname\config.json")
config = json.load(config_file)
Bây giờ tập lệnh Python của bạn có thể truy cập tệp cấu hình JSON của bạn, bạn sẽ muốn tạo kết nối cơ sở dữ liệu. Bạn sẽ cần đọc và sử dụng thông tin đăng nhập từ tệp cấu hình của mình:
con = psycopg2.connect(dbname= "db_name", host=config[hostname], port = config["port"],user=config["user_id"], password=config["password_key"])
cur = con.cursor()
Bạn vừa tạo một kết nối cơ sở dữ liệu! Khi bạn nhập thư viện psycopg, bạn đã dịch mã Python mà bạn đã viết ở trên để nói với cơ sở dữ liệu PostgreSQL (AWS Redshift).
Bản thân nó, AWS Redshift sẽ không hiểu đoạn mã trên. Nhưng vì bạn đã nhập thư viện psycopg, giờ đây bạn nói một ngôn ngữ mà AWS Redshift có thể hiểu được.
Điều thú vị về Python là nó có các thư viện cho SQLite, MySQL và PostgreSQL. Bạn sẽ có thể tích hợp các công nghệ một cách dễ dàng.
Cách viết Truy vấn SQL
Vui lòng tải xuống Dữ liệu bóng đá châu Âu vào cơ sở dữ liệu PostgreSQL của bạn. Tôi sẽ sử dụng dữ liệu của nó cho ví dụ này.
Kết nối cơ sở dữ liệu bạn đã tạo ở bước cuối cùng cho phép bạn viết SQL để sau đó lưu trữ dữ liệu trong cấu trúc dữ liệu thân thiện với Python. Bây giờ bạn đã thiết lập kết nối cơ sở dữ liệu, bạn có thể viết một truy vấn SQL để bắt đầu kéo dữ liệu:
query = "SELECT *
FROM League
JOIN Country ON Country.id = League.country_id;"
Tuy nhiên, công việc vẫn chưa được thực hiện. Bạn cần viết một số mã Python bổ sung để thực thi truy vấn SQL:
#Runs your SQL query
execute1 = cur.execute(query)
result = cur.fetchall()
Sau đó, bạn cần lưu trữ dữ liệu trả về trong khung dữ liệu gấu trúc:
#Create initial dataframe from SQL data
raw_initial_df = pd.read_sql_query(query, con)
print(raw_initial_df)
Bạn sẽ nhận được khung dữ liệu gấu trúc (raw_initial_df) trông giống như sau:
Có một Cơ sở dữ liệu cho Mọi người
SQLite, MySQL và PostgreSQL đều có ưu và nhược điểm của chúng. Một trong những bạn chọn phải phụ thuộc vào dự án của bạn hoặc nhu cầu của công ty. Bạn cũng nên cân nhắc xem bạn cần gì bây giờ so với vài năm nữa.
Điều quan trọng cần nhớ là Python có thể tích hợp với từng loại cơ sở dữ liệu.
Bài viết này giới thiệu sơ lược về những gì có thể xảy ra với việc kết nối Python với cơ sở dữ liệu SQL. Tôi thích nhìn cách phần mềm giao nhau và kết hợp để tăng thêm giá trị đáng kinh ngạc.
Nếu bạn muốn biết thêm loại nội dung này, bạn có thể tìm thấy tôi tại Course to Hire! Tôi muốn giúp nhiều người hơn nữa học cách viết mã và tìm được việc làm trong lĩnh vực công nghệ. Vui lòng liên hệ nếu bạn có bất kỳ câu hỏi nào hoặc nếu bạn chỉ muốn nói xin chào :)