Làm cách nào để đọc SQLite bằng Python?

Trong các hướng dẫn trước, chúng ta đã đề cập đến việc tạo cơ sở dữ liệu và điền vào cơ sở dữ liệu, bây giờ chúng ta cần tìm hiểu cách đọc từ cơ sở dữ liệu. Đọc từ cơ sở dữ liệu là nơi sức mạnh của việc sử dụng thứ gì đó như SQLite trên một tệp phẳng bắt đầu có ý nghĩa. Mặc dù chúng tôi có thể truy vấn toàn bộ bảng, thay vào đó, chúng tôi chỉ có thể truy vấn một cột hoặc thậm chí dựa trên các giá trị hàng cụ thể. Hãy xem ý tôi là gì

Mã cho đến thời điểm này

import sqlite3
import time
import datetime
import random

conn = sqlite3.connect['tutorial.db']
c = conn.cursor[]

def create_table[]:
    c.execute["CREATE TABLE IF NOT EXISTS stuffToPlot[unix REAL, datestamp TEXT, keyword TEXT, value REAL]"]


def data_entry[]:
    c.execute["INSERT INTO stuffToPlot VALUES[1452549219,'2016-01-11 13:53:39','Python',6]"]
    
    conn.commit[]
    c.close[]
    conn.close[]

def dynamic_data_entry[]:

    unix = int[time.time[]]
    date = str[datetime.datetime.fromtimestamp[unix].strftime['%Y-%m-%d %H:%M:%S']]
    keyword = 'Python'
    value = random.randrange[0,10]

    c.execute["INSERT INTO stuffToPlot [unix, datestamp, keyword, value] VALUES [?, ?, ?, ?]",
          [unix, date, keyword, value]]

    conn.commit[]
    
#create_table[]
#data_entry[]

for i in range[10]:
    dynamic_data_entry[]
    time.sleep[1]
c.close
conn.close[]

Tiếp theo, hãy tạo một chức năng khác, gọi nó là read_from_db

def read_from_db[]:
    c.execute['SELECT * FROM stuffToPlot']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]

Lưu ý rằng khi chúng tôi thực hiện truy vấn, chúng tôi đang thực hiện nó với con trỏ như bình thường. Sau đó, để truy cập dữ liệu từ con trỏ, chúng tôi sử dụng c.fetchall[]. Hãy nghĩ về điều này một lần nữa, giống như con trỏ máy tính. Cái

def read_from_db[]:
    c.execute['SELECT * FROM stuffToPlot']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]
0 giống như bạn tô đậm, rồi bạn làm c.fetchall[], như vậy giống như bạn đang sao chép thông tin được tô sáng của mình. Cuối cùng, chúng ta có thể chỉ cần in dữ liệu hoặc lặp lại dữ liệu đó, chẳng hạn như dán thông tin. Ngoài ra, lưu ý rằng chúng tôi không cần phải thực hiện một
def read_from_db[]:
    c.execute['SELECT * FROM stuffToPlot']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]
2. Không có gì để tiết kiệm

đầu ra

[[1452554968.0, '2016-01-11 15:29:28', 'Python', 8.0], [1452554969.0, '2016-01-11 15:29:29', 'Python', 3.0], [1452554970.0, '2016-01-11 15:29:30', 'Python', 4.0], [1452554971.0, '2016-01-11 15:29:31', 'Python', 3.0], [1452554972.0, '2016-01-11 15:29:32', 'Python', 4.0], [1452554973.0, '2016-01-11 15:29:33', 'Python', 7.0], [1452554974.0, '2016-01-11 15:29:34', 'Python', 2.0], [1452554975.0, '2016-01-11 15:29:35', 'Python', 3.0], [1452554976.0, '2016-01-11 15:29:36', 'Python', 0.0], [1452554977.0, '2016-01-11 15:29:37', 'Python', 1.0]]
[1452554968.0, '2016-01-11 15:29:28', 'Python', 8.0]
[1452554969.0, '2016-01-11 15:29:29', 'Python', 3.0]
[1452554970.0, '2016-01-11 15:29:30', 'Python', 4.0]
[1452554971.0, '2016-01-11 15:29:31', 'Python', 3.0]
[1452554972.0, '2016-01-11 15:29:32', 'Python', 4.0]
[1452554973.0, '2016-01-11 15:29:33', 'Python', 7.0]
[1452554974.0, '2016-01-11 15:29:34', 'Python', 2.0]
[1452554975.0, '2016-01-11 15:29:35', 'Python', 3.0]
[1452554976.0, '2016-01-11 15:29:36', 'Python', 0.0]
[1452554977.0, '2016-01-11 15:29:37', 'Python', 1.0]

Trong trường hợp trên, chúng tôi chỉ xuất toàn bộ bảng. Chúng tôi có thể đã sử dụng một tệp phẳng cho việc này. Hãy thử thêm vào một số logic tiếp theo

    c.execute['SELECT * FROM stuffToPlot WHERE value = 3']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]

đầu ra

[[1452554969.0, '2016-01-11 15:29:29', 'Python', 3.0], [1452554971.0, '2016-01-11 15:29:31', 'Python', 3.0], [1452554975.0, '2016-01-11 15:29:35', 'Python', 3.0]]
[1452554969.0, '2016-01-11 15:29:29', 'Python', 3.0]
[1452554971.0, '2016-01-11 15:29:31', 'Python', 3.0]
[1452554975.0, '2016-01-11 15:29:35', 'Python', 3.0]

Lần này, chúng tôi chỉ tham chiếu dữ liệu trong bảng có giá trị cho cột "giá trị" là 3

Còn các toán tử so sánh thì sao?

    c.execute['SELECT * FROM stuffToPlot WHERE unix > 1452554972']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]

Trong trường hợp này, chúng tôi đang chọn tất cả các hàng có giá trị trong cột unix lớn hơn 1452554972 [bạn sẽ muốn xem xét việc thay đổi giá trị đó tùy thuộc vào thời điểm bạn thực hiện hướng dẫn]

Bạn không chỉ có thể chỉ định hàng nào bạn muốn mà còn có thể chỉ định cột nào và thậm chí theo thứ tự nào

________số 8_______

Lần này, chúng tôi đang chọn các cột giá trị và dấu thời gian. Trong cơ sở dữ liệu, dấu dữ liệu đến trước, giá trị thứ hai và tất nhiên có các cột khác. Ở đây, chúng tôi đang chọn giá trị và dấu thời gian, theo thứ tự đó. Cũng lưu ý rằng lần này chúng tôi đang in hàng[0]. Bạn sử dụng lập chỉ mục như thế này để tham khảo các phần tử cụ thể. Vì bạn có thể rõ ràng về thứ tự của các cột, nên việc viết mã này không phải là một thách thức

Mã đầy đủ cho đến thời điểm này

import sqlite3
import time
import datetime
import random

conn = sqlite3.connect['tutorial.db']
c = conn.cursor[]

def create_table[]:
    c.execute["CREATE TABLE IF NOT EXISTS stuffToPlot[unix REAL, datestamp TEXT, keyword TEXT, value REAL]"]


def data_entry[]:
    c.execute["INSERT INTO stuffToPlot VALUES[1452549219,'2016-01-11 13:53:39','Python',6]"]
    
    conn.commit[]
    c.close[]
    conn.close[]

def dynamic_data_entry[]:

    unix = int[time.time[]]
    date = str[datetime.datetime.fromtimestamp[unix].strftime['%Y-%m-%d %H:%M:%S']]
    keyword = 'Python'
    value = random.randrange[0,10]

    c.execute["INSERT INTO stuffToPlot [unix, datestamp, keyword, value] VALUES [?, ?, ?, ?]",
          [unix, date, keyword, value]]

    conn.commit[]
    time.sleep[1]

def read_from_db[]:
    c.execute['SELECT * FROM stuffToPlot']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]

    c.execute['SELECT * FROM stuffToPlot WHERE value = 3']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]

    c.execute['SELECT * FROM stuffToPlot WHERE unix > 1452554972']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row]

    c.execute['SELECT value, datestamp FROM stuffToPlot WHERE unix > 1452554972']
    data = c.fetchall[]
    print[data]
    for row in data:
        print[row[0]]
    
read_from_db[]
c.close
conn.close[]

Trong hướng dẫn tiếp theo, chúng tôi sẽ trình bày một ví dụ về cách bạn có thể vẽ biểu đồ dữ liệu này từ cơ sở dữ liệu

Làm cách nào để đọc tệp SQLite trong gấu trúc?

Gấu trúc đọc từ Cơ sở dữ liệu SQLite .
Tạo kết nối cơ sở dữ liệu
Tạo một đối tượng con trỏ thông qua thực thi lệnh SQL SELECT
Tìm nạp tất cả các bản ghi thông qua con trỏ
Chuyển đổi danh sách bản ghi được trả về thành đối tượng DataFrame của gấu trúc

Làm cách nào để đọc cơ sở dữ liệu bằng 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

Làm cách nào để trích xuất dữ liệu từ cơ sở dữ liệu SQLite?

Xuất cơ sở dữ liệu SQLite sang tệp CSV .
Bật tiêu đề của tập kết quả bằng cách sử dụng. tiêu đề trên lệnh
Đặt chế độ đầu ra thành CSV để hướng dẫn công cụ sqlite3 đưa ra kết quả ở chế độ CSV
Gửi đầu ra tới tệp CSV
Đưa ra truy vấn để chọn dữ liệu từ bảng mà bạn muốn xuất sang

Chủ Đề