Python có thể làm việc với cơ sở dữ liệu không?

Python là ngôn ngữ cấp cao cung cấp hỗ trợ cho các cơ sở dữ liệu khác nhau. Chúng tôi có thể kết nối và chạy các truy vấn cho một cơ sở dữ liệu cụ thể bằng Python và không cần viết các truy vấn thô trong thiết bị đầu cuối hoặc trình bao của cơ sở dữ liệu cụ thể đó, chúng tôi chỉ cần cài đặt cơ sở dữ liệu đó trong hệ thống của mình

Trong hướng dẫn này, chúng ta sẽ thảo luận cách sử dụng Python với các cơ sở dữ liệu quan hệ được sử dụng phổ biến nhất như cơ sở dữ liệu MySQL, SQLite, NoSQL như MongoDB và chúng ta cũng sẽ thảo luận cách xử lý JSON bằng Python với sự trợ giúp của các ví dụ điển hình

Python MySQL

Python MySQL Connector là trình điều khiển Python giúp tích hợp Python và MySQL. Thư viện Python MySQL này cho phép chuyển đổi giữa các loại dữ liệu Python và MySQL. MySQL Connector API được triển khai bằng Python thuần túy và không yêu cầu bất kỳ thư viện bên thứ ba nào.  

Giới thiệu

  • Cài đặt trình kết nối Python MySQL
  • Mô-đun MySQL-Connector-Python trong Python
  • Kết nối cơ sở dữ liệu MySQL bằng MySQL-Connector Python

Truy vấn MySQL của Python

  • Python MySQL – Tạo cơ sở dữ liệu
  • con trăn. Bảng tạo MySQL
  • Python MySQL – Chèn vào bảng
  • Python MySQL – Chọn truy vấn
  • Python MySQL – Mệnh đề Where
  • Python MySQL – Sắp xếp theo mệnh đề
  • Python MySQL – Xóa truy vấn
  • Python MySQL – Bảng thả
  • Python MySQL – Cập nhật truy vấn
  • Python MySQL – Mệnh đề giới hạn
  • Python MySQL – Tham gia
  • Hoạt động cam kết và khôi phục trong Python

Ghi chú. Để biết thêm thông tin, hãy tham khảo Hướng dẫn Python MySQL chi tiết của chúng tôi

Python SQLite

Mô-đun SQLite3 của Python được sử dụng để tích hợp cơ sở dữ liệu SQLite với Python. Nó là một Python DBI API 2 được tiêu chuẩn hóa. 0 và cung cấp giao diện đơn giản và dễ sử dụng để tương tác với cơ sở dữ liệu SQLite. Không cần phải cài đặt riêng mô-đun này vì nó đi kèm với Python sau phiên bản 2. phiên bản 5x

Giới thiệu

  • Giới thiệu về SQLite trong Python
  • Python SQLite – Kết nối với cơ sở dữ liệu
  • Kiểu dữ liệu SQLite và các kiểu Python tương ứng của nó

Truy vấn SQLite Python

  • Python SQLite – Đối tượng con trỏ
  • Python SQLite – Tạo bảng
  • Python SQLite – Chèn dữ liệu
  • Python SQLite – Chọn dữ liệu từ bảng
  • Python SQLite – Mệnh đề WHERE
  • Python SQLite – ĐẶT HÀNG THEO Mệnh đề
  • Python SQLite – Mệnh đề GIỚI HẠN
  • Python SQLite – Mệnh đề THAM GIA
  • Python SQLite – Xóa dữ liệu trong bảng
  • Python SQLite – Bảng DROP
  • Python SQLite – Cập nhật dữ liệu
  • Python SQLite – Cập nhật cột cụ thể

Ghi chú. Để biết thêm thông tin, hãy tham khảo Hướng dẫn Python SQLite3 chi tiết của chúng tôi

JSON của Python

JSON JavaScript Object Notation là một định dạng để cấu trúc dữ liệu. Nó chủ yếu được sử dụng để lưu trữ và truyền dữ liệu giữa trình duyệt và máy chủ. Python cũng hỗ trợ JSON với gói tích hợp có tên là json. Gói này cung cấp tất cả các công cụ cần thiết để làm việc với các Đối tượng JSON bao gồm phân tích cú pháp, tuần tự hóa, giải tuần tự hóa, v.v.

Giới thiệu

  • JSON là gì?
  • Các kiểu dữ liệu trong JSON
  • Làm việc với dữ liệu JSON trong Python

Python JSON – Đọc và Viết

  • Đọc và ghi JSON vào một tệp bằng Python
  • Nối vào tệp JSON bằng Python

Phân tích cú pháp JSON

  • Làm cách nào để phân tích dữ liệu từ JSON thành Python?
  • Làm cách nào để chuyển đổi từ điển Python sang JSON?
  • Python – Chuyển đổi JSON thành chuỗi
  • Các cách để chuyển đổi chuỗi thành đối tượng json
  • Chuyển đổi dữ liệu JSON thành Đối tượng Python tùy chỉnh

Python JSON - Tuần tự hóa và giải tuần tự hóa

  • Tuần tự hóa JSON trong Python
  • json. kết xuất [] bằng Python
  • json. bãi [] trong Python
  • Python - Sự khác biệt giữa json. bãi [] và json. bãi []
  • Giải tuần tự hóa JSON thành đối tượng trong Python
  • json. tải [] bằng Python
  • json. tải [] bằng Python
  • Sự khác biệt giữa json. tải [] và json. tải []
  • Mã hóa và giải mã các đối tượng tùy chỉnh trong Python-JSON
  • Tuần tự hóa và giải tuần tự hóa JSON phức tạp trong Python

Python MongoDB

MongoDB là một trong những cơ sở dữ liệu NoSQL phổ biến nhất. Nó là một cơ sở dữ liệu đa nền tảng, hướng đối tượng. Về cơ bản NoSQL có nghĩa là MongoDB không lưu trữ dữ liệu trong bảng hoặc định dạng quan hệ mà cung cấp một cơ chế khác để lưu trữ và truy xuất dữ liệu. Cái này được gọi là BSON tương tự như JSON. Đó là lý do tại sao MongoDB cung cấp tốc độ cao, tính sẵn sàng cao và khả năng mở rộng cao

Cơ sở dữ liệu là một cách tuyệt vời, an toàn và đáng tin cậy để lưu trữ dữ liệu. Tất cả các cơ sở dữ liệu quan hệ chính đều có điểm chung — SQL — một ngôn ngữ để thao tác cơ sở dữ liệu, bảng và dữ liệu. SQL là một chủ đề rộng để đề cập, đặc biệt là khi giao dịch với các nhà cung cấp cơ sở dữ liệu khác nhau, chẳng hạn như Microsoft, IBM hoặc Oracle, vì vậy hãy bắt đầu với SQLite — hệ thống cơ sở dữ liệu nhẹ nhất

Vậy, SQLite là gì? . Đó là thư viện cung cấp cho chúng ta cơ sở dữ liệu hay hệ quản trị cơ sở dữ liệu quan hệ. Thuật ngữ 'Lite' có nghĩa là 'Nhẹ', có nghĩa là nhẹ để thiết lập và quản trị trong thế giới cơ sở dữ liệu

Tại sao tôi phải quan tâm? . Chắc chắn đây không phải là tùy chọn an toàn nhất, nhưng nó vẫn đánh bại các tệp CSV và Excel với biên độ lớn vì mọi người không thể thay đổi dữ liệu

Bài viết hôm nay có cấu trúc như sau

  • Tổng quan vấn đề
  • Tạo bảng
  • Tạo, đọc, cập nhật, xóa
  • thời gian kiểm tra
  • Phần kết luận

Vì vậy, chúng tôi sẽ đề cập đến những điều cơ bản — cách tạo bảng, chèn dữ liệu, cập nhật dữ liệu, xóa dữ liệu, tìm nạp tất cả dữ liệu và tìm nạp dữ liệu dựa trên một điều kiện. Đó là mọi thứ bạn cần để xây dựng ứng dụng

Tổng quan vấn đề

Bạn yêu thích phim ảnh? . Hôm nay chúng ta sẽ chỉ tập trung vào vấn đề đó bằng cách tạo cơ sở dữ liệu và bảng để lưu trữ tiêu đề phim và thông tin bổ sung. Sau khi tạo bảng, chúng ta sẽ cần khai báo một vài hàm

  • Để chèn phim
  • Để có được tất cả các bộ phim
  • Để có được một bộ phim duy nhất
  • Để cập nhật một bộ phim
  • Để xóa một bộ phim

Nghe có vẻ nhiều, nhưng không phải vậy. Chúng tôi sẽ sử dụng Python để giao tiếp với cơ sở dữ liệu SQLite và chúng tôi sẽ tìm nạp thông tin phim từ IMDB. com

Thật tuyệt vời. Bắt đầu nào

Tạo bảng

Chúng tôi không thể lưu trữ dữ liệu trực tiếp trong cơ sở dữ liệu — chúng tôi cần các bảng. Cơ sở dữ liệu lưu trữ bảng và bảng lưu trữ dữ liệu. Quy trình của chúng tôi như sau — chỉ tạo bảng phim nếu nó chưa tồn tại. Điều đó sẽ yêu cầu hai truy vấn SQL, một truy vấn để kiểm tra xem bảng có tên đã cho có tồn tại hay không và truy vấn kia để tạo bảng

Trước tiên, chúng ta cần nhập thư viện SQLite, thiết lập kết nối cơ sở dữ liệu và tạo con trỏ. Đoạn mã sau đây làm điều đó

import sqlite3 
conn = sqlite3.connect['movies.db'] 
c = conn.cursor[]

Nhưng bộ phim. cơ sở dữ liệu db sẽ được tạo nếu nó không tồn tại và nếu có, chỉ một kết nối được thiết lập

Tiếp theo, chúng ta sẽ khai báo một hàm kiểm tra xem một bảng có tồn tại không. Tên bảng được truyền dưới dạng tham số hàm và nó trả về True nếu bảng tồn tại và False nếu không

def table_exists[table_name]: 
    c.execute['''SELECT count[name] FROM sqlite_master WHERE TYPE = 'table' AND name = '{}' '''.format[table_name]] 
    if c.fetchone[][0] == 1: 
        return True 
    return False

Vì một số lý do, các chuỗi f mới hơn không hoạt động, vì vậy chúng tôi phải quay lại cú pháp cũ hơn — không thành vấn đề, nhưng hãy ghi nhớ điều đó. Bước tiếp theo là sử dụng hàm đã khai báo để kiểm tra xem bảng có tồn tại không và tạo bảng nếu không. Đoạn mã sau đây làm điều đó

if not table_exists['movies']: 
    c.execute[''' 
        CREATE TABLE movies[ 
            movie_id INTEGER, 
            name TEXT, 
            release_year INTEGER, 
            genre TEXT, 
            rating REAL 
        ] 
    ''']

Thật tuyệt vời. Phần này kết thúc tại đây và chúng ta sẽ chuyển sang nội dung thú vị tiếp theo

Tạo, đọc, cập nhật, xóa

Được rồi, chúng tôi đã định cấu hình mọi thứ và bây giờ là lúc để làm việc với dữ liệu. Để bắt đầu, chúng ta cần một hàm chèn phim vào bảng [phần Tạo]. Nó khá dễ viết, vì chúng ta cần thực hiện một câu lệnh INSERT duy nhất và thực hiện giao dịch. Đây là mã

def insert_movie[movie_id, name, release_year, genre, rating]: 
    c.execute[''' INSERT INTO movies [movie_id, name, release_year, genre, rating] VALUES[?, ?, ?, ?, ?] ''', [movie_id, name, release_year, genre, rating]] 
    conn.commit[]

Và đó là nó. Chúng tôi sẽ giữ phần kiểm tra sau và bây giờ chúng tôi sẽ tiếp tục với phần Đọc

Chúng ta sẽ khai báo hai chức năng ở đây — đầu tiên là lấy tất cả các phim và thứ hai là chỉ lấy một phim duy nhất, được chỉ định bởi ID phim. Bạn có thể dễ dàng cô đọng logic thành một chức năng duy nhất, nhưng tôi đã chọn cách tiếp cận này

Đây là chức năng tìm nạp tất cả các phim

def get_movies[]: 
    c.execute['''SELECT * FROM movies'''] 
    data = [] 
    for row in c.fetchall[]: 
        data.append[row] 
    return data

Và đoạn trích để tìm nạp một bộ phim

def get_movie[movie_id]: 
    c.execute['''SELECT * FROM movies WHERE movie_id = {}'''.format[movie_id]] 
    data = [] 
    for row in c.fetchall[]:  
        data.append[row] 
    return data

Tuyệt quá. Tiếp theo là phần Cập nhật. cái này phức tạp hơn. Chúng tôi muốn cập nhật các yếu tố theo một ID phim nhất định, nhưng chúng tôi sẽ cập nhật những gì? . Chúng tôi sẽ thực hiện cập nhật với một từ điển

Hãy để tôi giải thích. Chức năng cập nhật của chúng tôi sẽ chấp nhận hai tham số

  • ID phim — ID của phim bạn muốn cập nhật
  • cập nhật từ điển — cặp khóa/giá trị để cập nhật

Các khóa trong từ điển cập nhật phải được đặt tên theo các cột của bảng, nếu không sẽ xảy ra trường hợp ngoại lệ. Ngoài ra, chúng tôi cần xử lý việc cập nhật các trường số và văn bản. Đây là chức năng phức tạp nhất cho đến nay, nhưng bạn có thể xử lý nó

def update_movie[movie_id, update_dict]: 
    valid_keys = ['name', 'release_year', 'genre', 'rating'] 
    for key in update_dict.keys[]:  
        if key not in valid_keys: 
            raise Exception['Invalid field name!'] 
    for key in update_dict.keys[]: 
        if type[update_dict[key]] == str: 
            stmt = '''UPDATE movies SET {} = '{}' WHERE movie_id = {}'''.format[key, update_dict[key], movie_id] 
        else: 
            stmt = '''UPDATE movies SET {} = '{}' WHERE movie_id = {}'''.format[key, update_dict[key], movie_id] 
        c.execute[stmt] 
    conn.commit[]

Nhìn thấy? . Hãy kết thúc với phần Xóa. Nó đơn giản hơn nhiều so với cái trước, vì chúng ta chỉ cần thực hiện một câu lệnh duy nhất và thực hiện giao dịch. Đây là mã

def delete_movie[movie_id]: 
    c.execute['''DELETE FROM movies WHERE movie_id = {}'''.format[movie_id]] 
    conn.commit[]

Và điều đó kết thúc phần này. Chúng tôi sẽ kiểm tra các chức năng của chúng tôi tiếp theo

thời gian kiểm tra

Để bắt đầu, hãy chèn một vài phim

________số 8

Thực thi năm dòng này không xuất bất kỳ thứ gì ra bàn điều khiển, điều này được mong đợi — chúng tôi chỉ chèn dữ liệu vào bảng. Tiếp theo, chúng tôi sẽ sử dụng chức năng được xác định trước để lấy tất cả phim

print[get_movies[]]
Ảnh của tác giả

Thật tuyệt vời. Bây giờ chúng ta hãy chỉ lấy một bộ phim duy nhất

def table_exists[table_name]: 
    c.execute['''SELECT count[name] FROM sqlite_master WHERE TYPE = 'table' AND name = '{}' '''.format[table_name]] 
    if c.fetchone[][0] == 1: 
        return True 
    return False
0
Ảnh của tác giả

Điều đó khá dễ dàng. Bây giờ chúng ta sẽ xem cách cập nhật phim. Phần cuối cùng được chèn vào, World War Z, được cố tình cho điểm 10 và thuộc thể loại Lãng mạn, vì vậy hãy thay đổi điều đó

def table_exists[table_name]: 
    c.execute['''SELECT count[name] FROM sqlite_master WHERE TYPE = 'table' AND name = '{}' '''.format[table_name]] 
    if c.fetchone[][0] == 1: 
        return True 
    return False
1
Ảnh của tác giả

Bây giờ mọi thứ có ý nghĩa. Điều duy nhất còn lại phải làm là xóa một bộ phim — hãy xem cách thực hiện

def table_exists[table_name]: 
    c.execute['''SELECT count[name] FROM sqlite_master WHERE TYPE = 'table' AND name = '{}' '''.format[table_name]] 
    if c.fetchone[][0] == 1: 
        return True 
    return False
2

Điều đó không trả lại bất cứ điều gì — như mong đợi. Chúng tôi có thể nhanh chóng lấy tất cả các phim để xem chức năng xóa có hoạt động không

Hình ảnh của tác giả

Và thế là xong — mọi thứ hoạt động như quảng cáo. Hãy kết thúc mọi thứ trong phần tiếp theo

Trước khi bạn đi

Tôi hy vọng nó dễ dàng để làm theo cùng. Chúng tôi đã đề cập đến những điều cơ bản và để lại nhiều thứ chưa được xử lý. Nó vẫn đủ để xây dựng các ứng dụng hoặc API cơ bản, dựa trên cơ sở dữ liệu, nhưng nhiều hơn về API vào lúc khác

Python có thể được sử dụng cho cơ sở dữ liệu không?

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.

Cơ sở dữ liệu nào hoạt động tốt nhất với Python?

5 Cơ sở dữ liệu trong bộ nhớ hàng đầu hoạt động hiệu quả với Python .
làm lại. Redis là bộ đệm phân tán và cơ sở dữ liệu trong bộ nhớ. .
SQLite. SQLite là một mô-đun C hỗ trợ cơ sở dữ liệu dựa trên đĩa không cần chương trình máy chủ chuyên dụng và có thể được truy cập bằng ngôn ngữ truy vấn SQL không chuẩn. .
ghi nhớ. .
khí cầu. .
Hazelcast

Chủ Đề