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

Bạn có tin không, thời điểm bạn cài đặt Python trên máy tính của mình, bạn cũng đã cài đặt các công cụ tuyệt vời khác. Một trong số đó là SQLite

SQLite là một hệ thống quản lý cơ sở dữ liệu quan hệ dựa trên tệp (RDBMS) nhúng, có thể được sử dụng trong các ứng dụng Python của chúng tôi mà không phải cài đặt bất kỳ phần mềm bổ sung nào. Thay vào đó, chúng ta chỉ cần nhập thư viện Python có sẵn

c = conn.cursor()
3 để sử dụng cơ sở dữ liệu này

Trong hướng dẫn này, chúng ta sẽ xem cách kết nối với cơ sở dữ liệu, tạo bảng, chèn dữ liệu vào bảng và cách tích hợp nó với Pandas

Nếu bạn không muốn đọc, bạn có thể xem video YouTube của tôi để thay thế

Hãy nhớ đăng ký tại đây để nhận Bảng cheat SQL mà tôi sử dụng trong tất cả các hướng dẫn của mình (PDF miễn phí)

Tạo kết nối đến cơ sở dữ liệu

Điều đầu tiên chúng ta phải làm là tạo kết nối đến cơ sở dữ liệu. Để làm như vậy, chúng ta chỉ cần nhập sqlite3 và sử dụng phương thức

c = conn.cursor()
4. Trong dấu ngoặc đơn, chúng tôi viết tên của cơ sở dữ liệu mà chúng tôi muốn tạo. Trong trường hợp của tôi, tôi sẽ gọi nó là “sinh viên. db”

import sqlite3

# create a connection
conn = sqlite3.connect('students.db')

Nếu bạn chạy đoạn mã trên, một tệp mới có tên “students. db” sẽ được tạo trong thư mục làm việc của bạn

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

Bây giờ chúng ta có thể tạo một bảng và đưa dữ liệu vào đó

Tạo một bảng

Trước khi tạo bảng ta cần tạo con trỏ. Con trỏ là một đối tượng được sử dụng để tạo kết nối để thực hiện các truy vấn SQL. Chúng tôi sẽ sử dụng con trỏ để tạo bảng, chèn dữ liệu, v.v.

Để tạo con trỏ, chúng ta chỉ cần sử dụng kết nối mà chúng ta đã tạo và phương thức

c = conn.cursor()
5

c = conn.cursor()

Sau đó, chúng ta sử dụng phương thức

c = conn.cursor()
6 để tạo một bảng mới trong cơ sở dữ liệu của mình. Bên trong dấu ngoặc kép, chúng tôi viết cú pháp SQL trung bình được sử dụng để tạo bảng trong hầu hết các RDBMS. Trong trường hợp này, chúng tôi sử dụng câu lệnh
c = conn.cursor()
7

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")

Như bạn có thể thấy, chúng ta cần xác định kiểu dữ liệu khi tạo các cột của bảng. Không giống như hầu hết các RDBMS có hàng chục loại dữ liệu, SQLite chỉ có 5 loại dữ liệu

  • Vô giá trị. Giá trị còn thiếu
  • số nguyên. Số không có dấu thập phân (e. g. , 1, 2, 3, 4)
  • Có thật. Các số có dấu thập phân (e. g. , 6. 2, 7. 6, 11. 2)
  • Chữ. Dữ liệu ký tự bất kỳ
  • Bãi. Tập hợp dữ liệu nhị phân được lưu trữ dưới dạng giá trị trong cơ sở dữ liệu. Nó cho phép chúng tôi lưu trữ tài liệu, hình ảnh và các tệp đa phương tiện khác trong cơ sở dữ liệu

Cuối cùng, chúng ta phải cam kết và đóng kết nối. Đây là cách mã trông cho đến nay

Tuyệt vời. Chúng tôi đã tạo bảng đầu tiên của mình, nhưng nó trống, vì vậy hãy thêm một số dữ liệu vào đó

Chèn dữ liệu vào bảng

Hãy bắt đầu bằng cách thêm một hàng vào bảng "sinh viên" của chúng tôi. Để làm như vậy, chúng tôi sử dụng lại

c = conn.cursor()
6, nhưng bây giờ chúng tôi sử dụng câu lệnh
c = conn.cursor()
9

Dưới đây tôi thêm dữ liệu về một học sinh “đánh dấu” 20 tuổi và là 1. 9 mét

c.execute("INSERT INTO students VALUES ('mark', 20, 1.9)")

Lưu ý trước khi chạy đoạn code trên bạn cần comment câu lệnh

c = conn.cursor()
7 vì bảng đã tồn tại

Chúng tôi cũng có thể chèn nhiều hàng, nhưng trong trường hợp này, chúng tôi sử dụng phương thức_______7_______1. Ngoài ra, chúng tôi sử dụng

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
2 làm trình giữ chỗ. Điều này giúp chúng tôi thêm dữ liệu từ danh sách mà chúng tôi đặt tên là
c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
3

all_students = [
('john', 21, 1.8),
('david', 35, 1.7),
('michael', 19, 1.83),
]
c.executemany("INSERT INTO students VALUES (?, ?, ?)", all_students)

Chọn dữ liệu từ một bảng và hiển thị dữ liệu

Cho đến giờ chúng ta đã tạo một bảng và đưa dữ liệu vào đó, nhưng chúng ta vẫn chưa nhìn thấy bảng của mình. Để xem dữ liệu của chúng tôi, trước tiên chúng tôi cần chọn dữ liệu từ bảng của chúng tôi với câu lệnh

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
4 và sau đó hiển thị nó với
c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
5

c.execute("SELECT * FROM students")
print(c.fetchall())

Đầu ra được in phải là

[(‘mark’, 20, 1.9), (‘john’, 21, 1.8), (‘david’, 35, 1.7), (‘michael’, 19, 1.83)]

Trong trường hợp bạn không muốn lặp lại các bước này mỗi lần muốn xem dữ liệu trong bảng, bạn có thể sử dụng SQLiteViewer. Ở đó bạn chỉ cần kéo. db để xem nội dung của nó

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

Đây là tất cả những gì chúng tôi đã làm cho đến nay

Đó là nền tảng của SQLite trong Python. Những việc như cập nhật hàng, xóa hàng, sắp xếp dữ liệu và xóa bảng cũng có thể thực hiện được trong SQLite. Bạn chỉ cần sử dụng kiến ​​thức SQL của mình để thực hiện chúng

Làm việc với Pandas và SQLite

SQLite có thể tích hợp với các khung dữ liệu trong Pandas. Ví dụ: chúng tôi sẽ làm việc với tệp CSV có tên là

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
6 mà bạn có thể tải xuống tại đây

import pandas as pd
df = pd.read_csv("population_total.csv")

Đây là giao diện của khung dữ liệu

>>> df             country year    population0             China  2020.0  1.439324e+09
1 China 2019.0 1.433784e+09
2 China 2018.0 1.427648e+09
3 China 2017.0 1.421022e+09
4 China 2016.0 1.414049e+09
.. .. .. ...
4180 United States 1965.0 1.997337e+08
4181 United States 1960.0 1.867206e+08
4182 United States 1955.0 1.716853e+08
4183 India 1960.0 4.505477e+08
4184 India 1955.0 4.098806e+08

Bây giờ hãy tạo một cơ sở dữ liệu SQLite trong bộ nhớ. Để làm như vậy, trước tiên, chúng ta cần cài đặt sqlalchemy.

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
7

Sau đó, chúng ta cần tạo một động cơ

from sqlalchemy import create_engine
engine = create_engine('sqlite://', echo=False)

Bây giờ, hãy đính kèm khung dữ liệu vào một bảng trong cơ sở dữ liệu của chúng ta (bảng không cần tạo trước). Trong trường hợp này, tôi sẽ đính kèm

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
8 vào bảng mà tôi đặt tên là "dân số"

c = conn.cursor()
0

Để xem bảng của chúng tôi, chúng tôi chạy mã dưới đây

c = conn.cursor()
1

Ghi chú. Nếu bạn muốn tạo một tệp sqlite (thay vì cơ sở dữ liệu trong bộ nhớ), bạn nên tạo một công cụ có cơ sở dữ liệu tệp

Hãy tạo một tệp

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
9 và sau đó đính kèm khung dữ liệu
c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
8 vào bảng "dân số"

c = conn.cursor()
2

Một lần nữa, bạn có thể sử dụng

c.execute("""CREATE TABLE students (
name TEXT,
age INTEGER,
height REAL
)""")
5 để xem bảng hoặc sử dụng Trình xem SQLite

Xin chúc mừng. Bây giờ bạn đã biết cách làm việc với SQLite trong Python và thậm chí tích hợp nó với các khung dữ liệu trong Pandas

Tìm hiểu SQL - kỹ năng được yêu cầu nhiều nhất cho các chuyên gia dữ liệu. Nhận Bảng cheat SQL MIỄN PHÍ của tôi bằng cách tham gia danh sách email của tôi với hơn 20 nghìn người

Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Đó là 5 đô la một tháng, cho phép bạn truy cập không giới hạn vào hàng nghìn hướng dẫn về Python và các bài báo về Khoa học dữ liệu. Nếu bạn đăng ký bằng liên kết của tôi, tôi sẽ kiếm được một khoản hoa hồng nhỏ mà bạn không phải trả thêm phí

Cơ sở dữ liệu nào là tốt nhất cho Python và khoa học dữ liệu?

PostgreSQL .

Bạn có thể xây dựng cơ sở dữ liệu bằng Python không?

Giới thiệu. SQLAlchemy là một thư viện Python để triển khai cơ sở dữ liệu SQL mà không cần sử dụng chính ngôn ngữ SQL . Nói cách khác, tất cả những gì bạn cần làm là triển khai cơ sở dữ liệu của mình bằng ngôn ngữ Python.

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

Một cách nhanh chóng và dễ dàng để có thể chạy các truy vấn SQL bằng Python là sử dụng SQLite . SQLite là một thư viện sử dụng công cụ cơ sở dữ liệu SQL. Nó hoạt động tương đối nhanh và đã được chứng minh là có độ tin cậy cao.

SQLite có tốt hơn MySQL không?

MySQL yêu cầu máy chủ cơ sở dữ liệu để hoạt động. Do đó, nó tuân theo kiến ​​trúc máy khách/máy chủ. SQLite không yêu cầu máy chủ để chạy . Do đó, nó không có máy chủ.