Làm cách nào để tạo truy vấn SQL trong Python?

Python là một ngôn ngữ mạnh mẽ cho phép bạn thậm chí kết nối với cơ sở dữ liệu và chạy các truy vấn SQL. Thông thường, bạn có thể cần tìm nạp dữ liệu từ cơ sở dữ liệu từ bên trong ứng dụng hoặc trang web python của mình. Python cung cấp nhiều thư viện hữu ích cho mục đích này. Trong bài viết này, chúng ta sẽ xem xét cách kết nối với cơ sở dữ liệu bằng python và cũng tạo tập lệnh python để chạy truy vấn SQL đối với cơ sở dữ liệu của bạn


Tập lệnh Python để chạy truy vấn SQL

Dưới đây là các bước để chạy truy vấn SQL trong python


1. Cài đặt thư viện cơ sở dữ liệu Python

Trước tiên, bạn cần cài đặt đúng thư viện python, tùy thuộc vào loại cơ sở dữ liệu của bạn, để truy vấn cơ sở dữ liệu của bạn. Nếu bạn sử dụng cơ sở dữ liệu MySQL, hãy cài đặt gói MySQLdb. Nếu bạn sử dụng PostgreSQL, hãy cài đặt psycopg2 hoặc pygresql

Mở terminal và chạy các lệnh sau, tùy thuộc vào loại cơ sở dữ liệu của bạn

mysql

pip install MySQL-python
pip install MySQL-python-connector

PostgreSQL

pip install psycopg2
pip install pygresql


2. Tạo tập lệnh Python

Mở terminal và chạy lệnh sau để tạo tập lệnh python trống

$ sudo vi db_query.py

Thêm dòng sau vào nó để đặt môi trường thực thi

#!/usr/bin/env python


3. Nhập thư viện

Tùy thuộc vào Cơ sở dữ liệu của bạn, hãy thêm dòng sau để nhập thư viện thích hợp vào tập lệnh python của bạn

mysql

import MySQLdb as db_connect

PostgreSQL

import psycopg2 as db_connect


4. Kết nối với cơ sở dữ liệu của bạn

Tiếp theo, thêm các dòng sau để kết nối với cơ sở dữ liệu của bạn. Thay thế các giá trị của host_name, db_user, db_password và db_name bằng địa chỉ máy chủ, tên người dùng, mật khẩu và tên cơ sở dữ liệu của cơ sở dữ liệu của bạn tương ứng. Chúng tôi sử dụng phương thức connect[] để thiết lập kết nối cơ sở dữ liệu và chuyển thông tin đăng nhập của người dùng cơ sở dữ liệu làm đối số

host_name="localhost"
db_user="test_user"
db_password="123"
db_name="project

connection = db_connect.connect[host=host_name,user=db_user,password=db_password,database=db_name]
 
cursor = connection.cursor[]

Các dòng trên sẽ kết nối với cơ sở dữ liệu của bạn và trả về một đối tượng kết nối có thể được sử dụng để kết nối với cơ sở dữ liệu. Nó cũng cung cấp một đối tượng con trỏ được sử dụng để gửi truy vấn, tìm nạp kết quả và duyệt qua nó


5. cơ sở dữ liệu truy vấn

Tiếp theo, viết truy vấn SQL của bạn

query = "select * from data limit 5"

Tiếp theo, chúng ta sử dụng đối tượng con trỏ để thực hiện truy vấn, sử dụng lệnh exec

________số 8_______

Lệnh trên sẽ chạy truy vấn SQL của bạn và lấy kết quả của nó. Chúng tôi sử dụng chức năng tìm nạp [] để lấy tất cả các hàng dữ liệu. Bạn thậm chí có thể sử dụng tìm nạp [] để nhận một hàng tại một thời điểm. Bạn có thể in kết quả bằng lệnh in hoặc lặp qua nó và thực hiện thêm thao tác dữ liệu


6. Đóng kết nối

Cuối cùng, khi bạn đã hoàn tất, điều quan trọng là phải đóng kết nối để nó không khiến máy chủ cơ sở dữ liệu cơ sở dữ liệu của bạn bận rộn

connection.close[]

lưu và đóng tập tin. Đây là toàn bộ mã để bạn tham khảo

pip install psycopg2
pip install pygresql
0

Làm cho tệp có thể thực thi được bằng lệnh sau

pip install psycopg2
pip install pygresql
1

Bạn có thể chạy tập lệnh bằng lệnh sau

pip install psycopg2
pip install pygresql
2

Đó là nó. Trong bài viết này, chúng ta đã học cách kết nối với cơ sở dữ liệu và chạy các truy vấn SQL đối với chúng. Bạn có thể sửa đổi nó theo yêu cầu của bạn. Điều quan trọng là tạo một đối tượng kết nối bằng hàm connect[], sử dụng con trỏ được tạo bằng hàm cursor[] để chạy truy vấn và tìm nạp kết quả. Và cuối cùng đóng kết nối cơ sở dữ liệu

Điều quan trọng cần lưu ý là hầu hết tất cả các thư viện cơ sở dữ liệu đều sử dụng cùng chức năng connect[], cursor[], exec[], fetchall[] để làm việc với cơ sở dữ liệu. Vì vậy, bạn có thể sử dụng đoạn mã trên để truy vấn hầu hết mọi cơ sở dữ liệu quan hệ, chỉ bằng cách thay đổi câu lệnh nhập ở đầu. tập tin py

Để chỉ chọn một số cột trong bảng, hãy sử dụng câu lệnh "SELECT" theo sau là [các] tên cột

Thí dụ

Chỉ chọn các cột tên và địa chỉ

nhập mysql. kết nối

mydb = mysql. tư nối. kết nối[
máy chủ lưu trữ = "máy chủ cục bộ",
người dùng = "tên người dùng của bạn",
mật khẩu = "mật khẩu của bạn",
cơ sở dữ liệu = "cơ sở dữ liệu của tôi"
]

con trỏ = mydb. con trỏ[]

con trỏ. exec["CHỌN tên, địa chỉ TỪ khách hàng"]

kết quả của tôi = con trỏ của tôi. tìm nạp []

cho x trong kết quả của tôi
in[x]

Chạy ví dụ »

Học cách lọc dữ liệu bằng Python như một nhà phân tích dữ liệu

Thử tham gia các buổi đào tạo thực hành với hướng dẫn từng bước từ chuyên gia. Hãy thử dự án có hướng dẫn được thực hiện với sự cộng tác của Coursera ngay bây giờ

Tôi biết đây là một câu hỏi cũ, nhưng tôi thường muốn những gì có vẻ như OP muốn. Một thư viện RẤT đơn giản để tạo SQL cơ bản

Các chức năng dưới đây làm điều đó. Bạn cung cấp cho họ tên bảng và từ điển chứa dữ liệu bạn muốn sử dụng và họ trả về truy vấn SQL cho thao tác bạn cần

Các cặp khóa/giá trị đại diện cho tên trường và giá trị trong các hàng của cơ sở dữ liệu

def read[table, **kwargs]:
    """ Generates SQL for a SELECT statement matching the kwargs passed. """
    sql = list[]
    sql.append["SELECT * FROM %s " % table]
    if kwargs:
        sql.append["WHERE " + " AND ".join["%s = '%s'" % [k, v] for k, v in kwargs.iteritems[]]]
    sql.append[";"]
    return "".join[sql]


def upsert[table, **kwargs]:
    """ update/insert rows into objects table [update if the row already exists]
        given the key-value pairs in kwargs """
    keys = ["%s" % k for k in kwargs]
    values = ["'%s'" % v for v in kwargs.values[]]
    sql = list[]
    sql.append["INSERT INTO %s [" % table]
    sql.append[", ".join[keys]]
    sql.append["] VALUES ["]
    sql.append[", ".join[values]]
    sql.append["] ON DUPLICATE KEY UPDATE "]
    sql.append[", ".join["%s = '%s'" % [k, v] for k, v in kwargs.iteritems[]]]
    sql.append[";"]
    return "".join[sql]


def delete[table, **kwargs]:
    """ deletes rows from table where **kwargs match """
    sql = list[]
    sql.append["DELETE FROM %s " % table]
    sql.append["WHERE " + " AND ".join["%s = '%s'" % [k, v] for k, v in kwargs.iteritems[]]]
    sql.append[";"]
    return "".join[sql]

Bạn sử dụng nó như vậy. Chỉ cần đặt tên bảng và từ điển [hoặc sử dụng tính năng **kwargs của python]

>>> upsert["tbl", LogID=500, LoggedValue=5]
"INSERT INTO tbl [LogID, LoggedValue] VALUES ['500', '5'] ON DUPLICATE KEY UPDATE LogID = '500', LoggedValue = '5';"

>>> read["tbl", **{"username": "morten"}]
"SELECT * FROM tbl WHERE username = 'morten';"

>>> read["tbl", **{"user_type": 1, "user_group": "admin"}]
"SELECT * FROM tbl WHERE user_type = '1' AND user_group = 'admin';"

Nhưng HÃY THẬN TRỌNG CÁC TẤN CÔNG SQL INJECTION

Hãy xem điều gì sẽ xảy ra khi một người dùng ác ý mã của bạn làm điều này

>>> read["tbl", **{"user_group": "admin'; DROP TABLE tbl; --"}]
"SELECT * FROM tbl WHERE user_group = 'admin'; DROP TABLE tbl; --';"

Thật dễ dàng để tạo ORM tạm thời của riêng bạn nhưng bạn chỉ nhận được những gì bạn nhìn thấy -- bạn phải tự thoát đầu vào. ]

Làm cách nào để xây dựng truy vấn SQL trong Python?

Truy vấn SQL trong Python .
Bước 1. Nhập SQLAlchemy và Pandas. Hãy bắt đầu với việc nhập thư viện sqlalchemy. .
Bước 2. Tạo một công cụ SQL. Chúng tôi tạo một công cụ SQL bằng cách sử dụng lệnh tạo một lớp mới '. .
Bước 3 — Chạy truy vấn bằng câu lệnh SQL. .
Bước 4 — Viết thư cho DB. .
Bước 5— Tạo bảng trong DB

Làm cách nào để truy vấn dữ liệu SQL trong Python?

Các bước tìm nạp hàng từ bảng cơ sở dữ liệu MySQL .
Kết nối với MySQL từ Python. .
Xác định truy vấn CHỌN SQL. .
Nhận đối tượng con trỏ từ kết nối. .
Thực thi truy vấn SELECT sử dụng phương thức exec[]. .
Trích xuất tất cả các hàng từ một kết quả. .
Lặp lại từng hàng. .
Đóng đối tượng con trỏ và đối tượng kết nối cơ sở dữ liệu

Tôi có thể viết SQL bằng 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 khác nhau, tùy theo trường hợp sử dụng hiện tại hoặc theo sở thích cá nhân .

Làm cách nào để sử dụng truy vấn SQL trong gấu trúc Python?

Có thể thực hiện bằng lệnh pd. phương thức concat nếu chúng ta đang sử dụng Pandas. Nếu chúng tôi đang sử dụng SQL, chúng tôi sẽ cần phải tạo cột số hàng đang chạy và nối hai bảng bằng cách sử dụng số hàng . Vì Pandasql sử dụng SQLite bên trong, nên một bảng SQLite sẽ có cột rowid được tạo theo mặc định.

Chủ Đề