Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Python và SQL là hai trong số các ngôn ngữ quan trọng nhất cho các nhà phân tích dữ liệu.

Trong bài viết này, tôi sẽ hướng dẫn bạn mọi thứ bạn cần biết để kết nối Python và 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 các đường ống học máy của bạn, lưu trữ dữ liệu từ ứng dụng Python của bạn 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ể đưa ra.

Chúng tôi sẽ cùng nhau bao gồm:

  • Tại sao học cách sử dụng Python và SQL cùng nhau?
  • Cách thiết lập môi trường Python của bạn và máy chủ MySQL
  • Kết nối với máy chủ MySQL trong Python
  • Tạo cơ sở dữ liệu mới
  • Tạo bảng và mối quan hệ bàn
  • Bảng điền kinh với dữ liệu
  • Đọc dữ liệu
  • Cập nhật hồ sơ
  • Xóa hồ sơ
  • Tạo hồ sơ 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 tuyệt. Hãy vào đó!

Một lưu ý nhanh trước khi chúng tôi bắt đầu: Có một máy tính xách tay Jupyter chứa tất cả các mã được sử dụng trong hướng dẫn này có sẵn trong kho GitHub này. Mã hóa 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ừ phần giới thiệu trước đây của tôi về sê -ri SQL được đăng theo hướng khoa học dữ liệu (liên hệ với tôi nếu bạn có 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 bạn tới loạt bài đó (cộng với tất nhiên có một lượng lớn những thứ tuyệt vời có sẵn ở đây trên Freecodecamp!)

Đối với các nhà phân tích dữ liệu và các 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, seeborn và bokeh để trực quan hóa, và tenorflow, scikit-learn 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 và tính linh hoạt dễ học (tương đối) của nó, không có gì lạ 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 ta sử dụng Python để phân tích dữ liệu, thì đáng để 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 dữ liệu của tất cả các loại.

Hệ thống quản lý cơ sở dữ liệu quan hệ được sử dụng rộng rãi nhất (RDBMSS) - 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à thay đổi dữ liệu.

Lưu ý rằng mỗi RDBMS sử dụng một hương vị hơi khác nhau của SQL, do đó, mã SQL được viết cho một người thường sẽ không hoạt động trong một sửa đổi khác mà không có (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 làm việc, sự hiểu biết mạnh mẽ 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 để chỉ cho bạn 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ã cùng với hướng dẫn này, bạn sẽ cần môi trường Python của riêng bạn được thiết lập.

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 để mã cùng với Notebook Jupyter liên quan.

Chúng tôi sẽ sử dụng máy chủ cộng đồng MySQL vì nó được sử dụng 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 được thiết lập. Dưới đây là hướng dẫn cho người dùng Mac và Linux (mặc dù nó có thể thay đổi theo phân phối Linux).

Một khi bạn đã thiết lập những điều đó, chúng tôi sẽ cần phải khiến họ giao tiếp với nhau.

Đối với điều đó, chúng ta cần cài đặt thư viện Python đầu nối MySQL. Để làm điều nà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 chắc chắn 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 trong Python, điều đầu tiên chúng tôi muốn làm là nhập thư viện của chúng tôi.

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

Đối với hướng dẫn này, chúng tôi sẽ chỉ sử dụng hai thư viện - Trình kết nối và gấu trúc MySQL.

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 dễ dàng truy cập vào nó cho các chức năng của chúng tôi.

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 chúng tôi. Bây giờ chúng ta cần viết một số mã trong Python cho phép chúng ta thiết lập kết nối với máy chủ đó.

Hàm
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
a để 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à thực tiễn tốt nhất, để chúng ta có thể sử dụng điều này nhiều lần với nỗ lực tối thiểu. Một khi điều này được viết một khi 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 tương lai-bạn cũng sẽ biết ơn!

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

Dòng đầu tiên là chúng tôi đặt tên cho hàm (create_server_connection) và đặt tên cho các đối số mà hàm đó sẽ lấy (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 mở.

Tiếp theo, chúng tôi sử dụng một khối Excet thử Python để xử lý mọi lỗi tiềm ẩn. Phần đầu tiên cố gắng tạo kết nối với máy chủ bằng phương thức mySQL.connector.connect () bằng cách sử dụng các chi tiết được người dùng chỉ định trong các đối số. Nếu điều này hoạt động, chức năng sẽ in một thông điệp thành công nhỏ hạnh phúc.

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 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, 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)
HERe, 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 chuỗi.

Điều này sẽ tạo ra một thông điệp thành công:

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?
Hooray!

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

Bây giờ chúng tôi đã thiết lập một kết nối, bước tiếp theo của chúng tôi là tạo một 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 tôi sẽ làm điều này chỉ một lần, nhưng một lần nữa chúng tôi sẽ viết điều này như một hàm có thể sử dụng lại để chúng tôi có một chức năng hữu ích tốt đẹp, chúng tôi 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 có hai đối số, kết nối (đối tượng kết nối của chúng tôi) và truy vấn (truy vấn SQL mà chúng tôi sẽ viết trong bước tiếp theo). Nó thực thi 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 chúng tôi để 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ừ các đối tượng cha).

Đối tượng con trỏ này có các phương thức như Execute, Executemany (mà chúng tôi 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ó giúp, chúng ta có thể nghĩ về đối tượng con trỏ vì cung cấp cho chúng ta quyền truy cập vào con trỏ nhấp nháy trong cửa sổ đầu cuối máy chủ MySQL.

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?
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 chức năng:

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Tất cả các truy vấn SQL được sử dụng trong hướng dẫn này đều được giải thích trong phần giới thiệu của tôi về sê -ri hướng dẫn SQL và mã đầy đủ có thể được tìm thấy trong sổ ghi chép Jupyter liên quan trong kho lưu trữ GitHub này, vì vậy tôi sẽ không cung cấp giải thích về những gì mã SQL làm trong này hướng dẫn.

Đâ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ể có thể tìm ra những gì nó làm!

Chạy chức năng created_database với các đối số như trên kết quả trong cơ sở dữ liệu gọi là '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ó lẽ bây giờ sẽ là thời điểm tốt để xem xét chi tiết hơn về chính xác những gì chúng ta sẽ thực hiện trong hướng dẫn này.

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

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?
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 tôi 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 của công ty.

Sơ đồ mối quan hệ thực thể này (ERD) đưa ra 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 các mối quan hệ giữa chúng.

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

Mã SQL RAW, 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 GitHub này, nhưng bạn sẽ thấy tất cả khi chúng ta đi qua hướng dẫn này.

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

Bây giờ chúng tôi đã tạo một cơ sở dữ liệu trong máy chủ MySQL, chúng tôi có thể sửa đổi chức năng created_server_connection của chúng tôi để 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 hàm, nhưng bây giờ chúng tôi lấy thêm một đối số - tên cơ sở dữ liệu - và truyền đó là một đối số cho phương thức Connect ().

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

Chức năng cuối cùng chúng ta sẽ tạo (bây giờ) là một chức năng thực thi truy vấn cực kỳ quan trọng. Đ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 làm chuỗi và chuyển chúng sang phương thức con trỏ.execute () để 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 created_database của chúng tôi từ trước đó, ngoại trừ việc nó sử dụng phương thức Connection.Commit () để đảm bảo rằng các lệnh được chi tiết trong các truy vấn SQL của chúng tôi được triển khai.

Đây sẽ là chức năng WorkHorse của chúng tôi, chúng tôi sẽ sử dụng (cùng với created_db_connection) để tạo bảng, thiết lập mối quan hệ giữa các bảng đó, điền vào các bảng với dữ liệu và cập nhật và xóa các bản ghi trong cơ sở dữ liệu của chúng tôi.

Nếu bạn là một 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ể nằm xung quanh, trực tiếp từ tập lệnh Python. Đây có thể là một công cụ rất mạnh mẽ để quản lý dữ liệu của bạn.

Tạo bảng

Bây giờ tất cả chúng ta đã thiết lập để bắt đầu chạy các lệnh SQL vào máy chủ của chúng tôi và bắt đầu xây dựng cơ sở dữ liệu của chúng tôi. Điều đầu tiên chúng tôi muốn làm là tạo ra 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:

create_teacher_table = """
CREATE TABLE teacher (
  teacher_id INT PRIMARY KEY,
  first_name VARCHAR(40) NOT NULL,
  last_name VARCHAR(40) NOT NULL,
  language_1 VARCHAR(3) NOT NULL,
  language_2 VARCHAR(3),
  dob DATE,
  tax_id INT UNIQUE,
  phone_no VARCHAR(20)
  );
 """

connection = create_db_connection("localhost", "root", pw, db) # Connect to the Database
execute_query(connection, create_teacher_table) # Execute our defined query

Trước hết, chúng tôi chỉ định lệnh SQL của chúng tôi (được giải thích chi tiết ở đây) cho một biến có tên thích hợp.

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

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

Vì lợi ích của con người, những người sẽ đọc mã của bạn, tuy nhiên, ngay cả khi đó sẽ chỉ là 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 tương tự cũng đúng với việc viết hoa của các nhà khai thác trong SQL. Đây là một quy ước được sử dụng rộng rãi được khuyến nghị mạnh mẽ, nhưng phần mềm thực tế chạy mã không nhạy cảm với trường hợp và sẽ coi 'Tạo giáo viên bảng' và 'tạo giáo viên bảng' là các lệnh giống hệt nhau.

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Chạy mã này cho chúng tôi thông điệp thành công của chúng tôi. Chúng tôi cũng có thể xác minh điều này trong ứng dụng khách lệnh của máy chủ MySQL:

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Tuyệt quá! Bây giờ chúng ta 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 các 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 đến nhiều giữa các bảng tham gia và khóa học (xem ở đâ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 tương tự:

pip install pandas
0

Bây giờ các bảng của chúng tôi đượ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 nước ngoài.

Điền vào 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 Execute_Query để cung cấp các lệnh SQL hiện tại của chúng tôi vào máy chủ. Hãy bắt đầu lại với bàn giáo viên.

pip install pandas
1

Điều này có hoạt động không? Chúng tôi có thể kiểm tra lại trong máy khách dòng lệnh MySQL của chúng tôi:

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?
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 mối 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. Là một nhà phân tích dữ liệu, bạn có thể tiếp xúc với các 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 rút dữ liệu ra khỏi các cơ sở dữ liệu đó để sau đó có thể được đưa vào đường ống dữ liệu Python của bạn. Đây là những gì chúng tôi 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 hàm, lần này bằng cách sử dụng con trỏ.fetchall () thay vì con trỏ.commit (). 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 tôi sẽ thực hiện điều này theo một cách rất giống với EXECUTE_QUERY. Hãy thử nó với một truy vấn đơn giản để xem nó hoạt động như thế nào.

pip install pandas
4Exactly những gì chúng tôi đang mong đợi. Chức năng cũng hoạt động với các truy vấn phức tạp hơn, chẳng hạn như cái này liên quan đến việc tham gia khóa học và bảng máy khách.
Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Exactly what we are expecting. The function also works with more complex queries, such as this one involving a JOIN on the course and client tables.

pip install pandas
5 rất đẹp.
Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Very nice.

Đối với các đường ống dữ liệu và quy trình công việc của chúng tôi trong Python, chúng tôi có thể muốn có được những 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 để chúng tôi thao túng.

Chúng ta hãy trải 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 vào một danh sách

pip install pandas
6 Xác định đầu ra vào danh sách các danh sách
Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Formatting Output into a List of Lists

pip install pandas
7 Xác định đầu ra vào một khung dữ liệu gấu trúc
Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Formatting Output into a pandas DataFrame

Đối với các nhà phân tích dữ liệu sử dụng Python, Pandas 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 một khung dữ liệu và từ đó các khả năng là vô tận!

pip install pandas
8Hope, bạn có thể thấy các khả năng mở ra trước mặt bạn ở đây. Chỉ với một vài dòng mã, chúng ta có thể dễ dàng trích xuất tất cả dữ liệu chúng ta có thể xử lý từ các cơ sở dữ liệu quan hệ nơi nó sống và kéo nó vào các đường ống phân tích dữ liệu hiện đại của chúng ta. Đây thực sự là thứ hữu ích.
Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Hopefully you can see the possibilities unfolding in front of you here. With just a few lines of code, we can easily extract all the data we can handle from the relational databases where it lives, and pull it into our state-of-the-art data analytics pipelines. This is really helpful stuff.

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 thay đổi các hồ sơ hiện có. Trong phần này, chúng ta sẽ xem xét cách 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 mình, Liên đoàn doanh nghiệp lớn, đang chuyển văn phòng đến 23 Fingeriertweg, 14534 Berlin. Trong trường hợp này, quản trị viên cơ sở dữ liệu (đó là chúng tôi!) Sẽ cần thực hiện một số thay đổi.

Rất may, chúng tôi có thể làm điều này với chức năng Execute_Query của chúng tôi 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ả các địa chỉ cho tất cả các bản ghi trong bảng khách của chúng tôi sẽ được cập nhật lên 23 FingeriertWeg. Đó là rất nhiều không phải là những gì chúng ta đang tìm cách làm.

Cũng lưu ý rằng chúng tôi đã sử dụng "WHERE ỨNG DỤNG_ID = 101" trong truy vấn cập nhật. Cũng có thể sử dụng "WHERE CLIENT_NAME = 'Liên đoàn doanh nghiệp lớn'" hoặc "WHERE Địa chỉ = '123 Falschungstraße, 10999 Berlin'" hoặc thậm chí "trong đó địa chỉ như '%falschung%'".

Điều quan trọng là mệnh đề WHERE cho phép chúng ta xác định duy nhất bản ghi (hoặc hồ sơ) mà chúng ta muốn cập nhật.

Xóa hồ sơ

Cũng có thể sử dụng chức năng Execute_Query của chúng tôi để xóa các bản ghi, bằng cách sử dụng xóa.

Khi sử dụng SQL với cơ sở dữ liệu quan hệ, chúng ta cần cẩn thận bằng cách sử dụng toán tử xóa. Đây không phải là Windows, không có 'Bạn có chắc mình muốn xóa cái này không?' Cảnh báo bật lên, và không có thùng tái chế. Một 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, chúng ta hãy xem đ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 chúng ta hãy nhắc nhở bản thân những khóa học chúng ta có.

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Giả sử khóa học 20, 'Fortgeschrittenes Russisch' (đó là 'Nga tiến bộ' đối với bạn và tôi), sắp kết thúc, vì vậy chúng tôi cần loại bỏ nó khỏi cơ sở dữ liệu của chúng tôi.

Trong giai đoạn này, bạn sẽ không ngạc nhiên với cách chúng tôi thực hiện điều này - lưu lệnh SQL dưới dạng chuỗi, sau đó cung cấp nó vào chức năng exce_query 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ó hiệu lực dự định:

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

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

Điều này cũng hoạt động với việc xóa toàn bộ các cột bằng cách sử dụng cột thả và toàn bộ các bảng bằng cách sử dụng các lệnh bảng thả, nhưng chúng tôi sẽ không bao gồm các cột trong hướng dẫn này.

Tuy nhiên, hãy tiếp tục và thử nghiệm với họ - không quan trọng 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ấu, và bạn nên trở nên thoải mái với các lệnh này trước khi chuyển sang môi trường sản xuất.

Oh crud

Đến thời điểm này, chúng tôi hiện có thể hoàn thành bốn hoạt động 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 - Thực hiện các thay đổi đối vớ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 hữu ích tuyệt vời để có thể làm.

Trước khi chúng tôi hoàn thành mọi thứ ở đây, chúng tôi có thêm một kỹ năng rất tiện dụng để học hỏi.

Tạo hồ sơ từ danh sách

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

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 khi có thể lấy cấu trúc dữ liệu Python (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 một ứng dụng truyền thông xã hội mà chúng tôi đã viết bằng Python hoặc nhập từ người dùng vào một wiki mà chúng tôi đã xây dựng 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. & nbsp;

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ỳ điểm nào, vì nó giúp ngăn ngừa chống lại các cuộc tấn công tiêm SQL, 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.

Để thực hiện điều này, chúng tôi sẽ viết một hàm bằng phương thức EXECUTEMANY (), thay vì phương thức EXECUTE () đơn giản hơn mà chúng tôi đã 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 lệnh SQL ('SQL') và danh sách chứa các giá trị 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à một 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 tôi có thể viết một số mã như sau:

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à trùng hợp (và thẳng thắn, 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 Kết nối.

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 các trình giữ chỗ '%D' cho các 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 ta cần sử dụng '%s' cho mỗi cột mà chúng ta muốn thêm một giá trị.

Hàm EXECUTEMANY sau đó lấy mỗi tuple trong danh sách 'Val' của chúng tôi và chèn giá trị có liên quan cho cột đó thay cho trình giữ chỗ và thực thi lệnh SQL cho mỗi tuple 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, cho 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
3welcome đến ILS, Hank và Sue!
Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?

Welcome to the ILS, Hank and Sue!

Đây là một chức năng hữu ích sâu sắc 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.

Sự kết luận

Chúng tôi đã đề cập rất nhiều nền tảng trong hướng dẫn này.

Chúng tôi đã học được cách sử dụng Trình kết nối Python và MySQL để tạo cơ sở dữ liệu hoàn toàn mới trong máy chủ MySQL, tạo các bảng trong cơ sở dữ liệu đó, xác định các mối quan hệ giữa các bảng đó và điền chúng bằng dữ liệu.

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ác cơ sở dữ liệu hiện có và tải chúng vào các khung dữ liệu gấu trúc, sẵn sàng để phân tích và tiếp tục tận dụng tất cả các khả năng được cung cấp bởi ngăn xếp Pydata.

Đi theo hướng khác, chúng tôi cũng đã học được cách lấy dữ liệu được tạo bởi các tập lệnh và ứng dụng Python của chúng tôi, và viết 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 xem làm thế nào 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, xin vui lòng liên hệ trực tiếp với tôi - tất cả các phản hồi đều được nhận nồng nhiệt!

Hướng dẫn how do you create a sql query in python? - làm thế nào để bạn tạo một truy vấn sql trong python?


Học mã miễn phí. Chương trình giảng dạy 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

Tôi có thể tạo cơ sở dữ liệu SQL trong Python không?

Tạo cơ sở dữ liệu trong MySQL bằng Python, bạn có thể kết nối với cơ sở dữ liệu hiện có hoặc, tạo riêng của bạn.Bạn sẽ cần các đặc quyền đặc biệt để tạo hoặc xóa cơ sở dữ liệu MySQL.Vì vậy, nếu bạn có quyền truy cập vào người dùng gốc, bạn có thể tạo bất kỳ cơ sở dữ liệu nào.You can connect to an existing database or, create your own. You would need special privileges to create or to delete a MySQL database. So if you have access to the root user, you can create any database.

Tôi có thể sử dụng SQL trong Python không?

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, được quyết định bởi trường hợp sử dụng trong tay hoặc theo sở thích cá nhân.Data scientists use SQL in Python in a variety of instances, dictated by the use case at hand or by personal preference.