Python cho SQL

Ngôn ngữ lập trình Python có các tính năng mạnh mẽ để lập trình cơ sở dữ liệu. Python hỗ trợ nhiều cơ sở dữ liệu khác nhau như SQLite, MySQL, Oracle, Sybase, PostgreSQL, v.v. Python cũng hỗ trợ Ngôn ngữ Định nghĩa Dữ liệu [DDL], Ngôn ngữ Thao tác Dữ liệu [DML] và Câu lệnh Truy vấn Dữ liệu. Tiêu chuẩn Python cho giao diện cơ sở dữ liệu là Python DB-API. Hầu hết các giao diện cơ sở dữ liệu Python đều tuân thủ tiêu chuẩn này

Dưới đây là danh sách các giao diện cơ sở dữ liệu Python có sẵn. Giao diện và API cơ sở dữ liệu Python. Bạn phải tải xuống mô-đun API DB riêng cho từng cơ sở dữ liệu bạn cần truy cập

Trong chương này chúng ta sẽ thấy việc sử dụng cơ sở dữ liệu SQLite trong ngôn ngữ lập trình python. Nó được thực hiện bằng cách sử dụng mô-đun sqlite3 sẵn có của python. Trước tiên, bạn nên tạo một đối tượng kết nối đại diện cho cơ sở dữ liệu và sau đó tạo một số đối tượng con trỏ để thực thi các câu lệnh SQL

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

Mã Python sau đây cho biết cách sử dụng câu lệnh DELETE để xóa bất kỳ bản ghi nào, sau đó tìm nạp và hiển thị các bản ghi còn lại từ bảng COMPANY

SQL, viết tắt của ngôn ngữ truy vấn có cấu trúc, là ngôn ngữ lập trình trong đó người dùng truy vấn cơ sở dữ liệu quan hệ. Các nhà khoa học dữ liệu sử dụng SQL trong Python trong nhiều trường hợp khác nhau, được quyết định bởi trường hợp sử dụng hiện tại hoặc theo sở thích cá nhân. SQL chủ yếu được sử dụng để tổ chức dữ liệu, đặc biệt là trong các truy vấn đào tạo, cũng như để phân tích kết quả mô hình đặc biệt. Một số vị trí khác cũng có thể gặt hái những lợi ích của SQL, bao gồm kỹ sư phần mềm, nhà phân tích dữ liệu và kinh doanh và kỹ sư dữ liệu

Chúng ta sẽ xem xét ba phương pháp sử dụng SQL trong bài viết này. Phương thức đầu tiên, kết nối với cơ sở dữ liệu SQL của bạn thông qua ngôn ngữ lập trình Python bằng các lệnh SQL truyền thống, có lẽ là cách sử dụng truyền thống nhất của nó. Phương pháp thứ hai là sử dụng các lệnh SQL trong khung dữ liệu Pandas của bạn với truy vấn, mà tôi nghĩ là phương pháp dễ nhất trong số các phương pháp này để hiển thị trong Jupyter Notebook của bạn. Cuối cùng, bạn có thể thực hiện các lệnh giống như SQL trong khung dữ liệu Pandas có chức năng tương tự như các hàm SQL truyền thống.

Cách sử dụng SQL trong Python

  1. SQLite/MS-SQL Server/Oracle/MySQL/Vân vân
  2. Truy vấn gấu trúc
  3. Truy vấn khung dữ liệu

Thông tin khác từ Matt Przybyla 5 câu hỏi thường gặp trong cuộc phỏng vấn xin việc về Khoa học dữ liệu của bạn

 

SQLite/MS-SQL Server/Oracle/MySQL/Vân vân

Chúng ta sẽ thảo luận về hai trong số nhiều thư viện/mô-đun mà bạn có thể sử dụng thông qua Python. Sqlite3Pyodbc.

Tất cả các phương pháp này hoạt động giống nhau ở chỗ chúng cần những thứ sau.

  • nhập thư viện Python
  • kết nối với cơ sở dữ liệu
  • tạo một đối tượng con trỏ để bạn có thể sử dụng các lệnh SQL

Vì vậy, hãy xem cách kết nối với SQLite từ cơ sở dữ liệu cục bộ

import sqlite3
connection = sqlite3.connect[“database_name.db”]
cursor = connection.cursor[]
cursor.execute[“SELECT * FROM table_name”].fetchall[]

Ở dòng cuối cùng này, bạn có thể tưởng tượng rằng bạn cũng có thể thực hiện tất cả các lệnh SQL bình thường của mình [e. g. , WHERE, GROUP BY và ORDER BY, để kể tên một số].  

Mô-đun tiếp theo, Pyodbc, có thể được sử dụng cho kết nối từ xa, cho phép bạn kết nối với cơ sở dữ liệu MS-SQL, Oracle và MySQL.

Ví dụ máy chủ MS-SQL

Hãy nhớ rằng đây không phải là mã duy nhất bạn có thể sử dụng để kết nối với các cơ sở dữ liệu này

import pyodbc 

connection = pyodbc.connect['Driver={SQL Server};'
                      'Server=server_name;'
                      'Database=database_name;'
                      'Trusted_Connection=yes;']
# OR ADD THIS TO THAT SAME STRING ABOVE IN PLACE OF 
Trusted_Connection^

'UID=USER_ID_HERE;'
'PWD=PASSWORD_HERE;'

cursor = connection.cursor[]
cursor.execute['SELECT * FROM table_name']

Ví dụ Oracle

substitute 'Driver={SQL Server};' for 'Driver={Oracle in 
OraClient12Home1};' 

or other Oracle driver

Ví dụ MySQL

connection = pyodbc.connect['CData ODBC Driver for MySQL};'
                      'User=user_name;'
                      'Password=your_pasword;'
                      'Database=db_name;'
                      'Server=server_name;'
                      'Port=port_number;']
                      'Database=db_name;']
or other MySQL driver

Với tất cả các kết nối, bạn có thể đọc SQL vào khung dữ liệu Pandas bằng mã này.

df = pd.read_sql['SELECT * FROM Table', connection]

Đây là một cách hay để sử dụng SQL với Python thông qua Pandas. Rất nhiều nhà khoa học dữ liệu thích làm việc với các khung dữ liệu vì chúngdễ sử dụng và hoạt động tốt với các thư viện Python dành cho khoa học dữ liệu và máy học. Ví dụ: bạn có thể truy vấn dữ liệu của mình bằng một trong các kết nối SQL như được mô tả ở trên và lưu nó vào khung dữ liệu của bạn. Sau đó, bạn có thể tạo tập huấn luyện và kiểm tra từ tập dữ liệu chính đó để sử dụng trong mô hình khoa học dữ liệu của mình.

 

Truy vấn gấu trúc

Truy vấn Pandas cho phép bạn truy vấn trực tiếp khung dữ liệu của mình bằng Python mà không cần bất kỳ kết nối nào vì bạn ' chỉ đơn giản là làm việc với dữ liệu đã có . Cách tiếp cận này ít rắc rối hơn và vẫn thu được những lợi ích của ngôn ngữ truy vấn tương tự như SQL. Các lợi ích bao gồm so sánh các cột để phân tích, cũng như các phép tính số học khác giữa các trường, v.v.

Dưới đây là một vài ví dụ về truy vấn khung dữ liệu của bạn bằng mã giống như SQL

# return rows where values from one column are bigger than that of 
another

df.query['column_1 > column_2']

# see which rows where the 'column_1' values
# are greater than the mean of the total column
# use the '@' to reference 'column_mean'

column_mean = df['column_1'].mean[]

df.query['Confirmed_New > @column_mean']

# text conditions
# use double quotes for matching on the string value
# all the rows returned have 'green' for the 'text_column' 

df.query['text_column == "green"'].head[]

Đây chỉ là một số ví dụ về dữ liệu trả về có thể được sử dụng để phân tích tính năng

 

Truy vấn khung dữ liệu

Phương thức cuối cùng này không phải là SQL, cũng không sử dụng phương thức truy vấn, nhưng nó vẫn sử dụng các lệnh giống như SQL mà bạn có thể sử dụng trong khung dữ liệu Pandas của mình bằng Python

Đây là một cách chúng ta có thể thực hiện phương pháp này

print['Percent of data that is above 30 years old OR were born between 
2010 and 2021:”,
 100*round[df[[df['age'] > 30] | [df['birthdate'] >= '2010–01–01'] & 
 [df['birthdate'] 

Chủ Đề