學委之前寫了一篇把 熱榜生成html報告的,看起來是方便了,
但是統計不太方便啊!好吧,我們搞個資料庫把資料存起來,存多點后面分析,
那么,選擇哪個資料庫好呢?
MySQL?Oracle?PostgresSQL?云資料庫?
好多選擇啊,Python就內置了一個資料庫福利,這里就是Sqlite(sqlite3內置庫)啦,

安裝sqlite3?不用!
sqlite3是python安裝后的一個預裝的模塊,算是內置的資料庫,直接匯入就完啦,
下面直接看代碼,保存為demo_db.py.
"""
雷學委Demo代碼
"""
import sqlite3
#創建資料庫連接
xuewei_conn = sqlite3.connect("xuewei_jishu.db")
#新建游標
cur = xuewei_conn.cursor()
#下面的sql為創建資料庫表tech_stack
sql = """
create table tech_stack(
id INT,
name TEXT
);
"""
cur.execute(sql)
cur.close()
代碼加了注釋了比較簡單不多贅述,直接復制運行代碼,
直接查看當前運行目錄,發現多了一個xuewei_jishu.db

也可以用終端輸入sqlite3 xuewei_jishu.db使用資料庫,如下:
小白會問:內置資料庫是不是可以縮寫簡記為內庫啊?那么sqlite3 就是python的內庫啊?
呵呵,學委并不想理會,同時想要扔幾千行SQL過去,(開個玩笑,寫SQL不要搞幾千行這樣很不厚道!害人害己啊!)
我們剛剛創建了資料庫了, 并在資料庫中創建了一個表tech_stack(小白還沒有反應過來,這就搞定了?),
我們在資料表中添加技術棧吧
保存下面代碼為,demo_db_add.py
"""
雷學委Demo代碼
"""
import sqlite3
#創建資料庫連接
xuewei_conn = sqlite3.connect("xuewei_jishu.db")
#新建游標
cur = xuewei_conn.cursor()
sql = """
insert into tech_stack
(ID, name)
values
(1, "Java"),
(2, "Python"),
(3, "Node.JS"),
(4, "Scala");
"""
cur.execute(sql) #PS學委會的不止這些,這里只是展示一下,歡迎關注三連支持!
xuewei_conn.commit() #PS:commit必須記得
cur.close() #也記得close
運行代碼,這個不會報錯的,
查看資料庫表格的內容
"""
雷學委Demo代碼
"""
import sqlite3
#創建資料庫連接
xuewei_conn = sqlite3.connect("xuewei_jishu.db")
#新建游標
cur = xuewei_conn.cursor()
sql = """
select * from tech_stack;
"""
cur.execute(sql)
data = cur.fetchall()
print('query result; %s' % (data))
cur.close()
運行效果如下:

練手完畢,現在創建資料庫blog,同時建一個表ranklist
| 列 | 型別 | 示例值 |
|---|---|---|
| id | row_id 字串型別 | 09467de8-ff76-11eb-8c11-7831c1c54756 |
| title | 字串型別 | ??爬蟲截長屏不方便閱讀!推薦dominate直接生成報告?? |
| link | 字串型別 | https://blog.csdn.net/geeklevin/article/details/119657231 |
| author | 字串型別 | 雷學委 |
| creation_time | TIMESTAMP | 2021-08-18 00:13:19 |
學委特別定制之創建資料庫和表格Python代碼
"""
雷學委Demo代碼
"""
import sqlite3
#創建資料庫連接
xuewei_conn = sqlite3.connect("blog.db")
#新建游標
cur = xuewei_conn.cursor()
sql = """
create table ranklist(
id VARCHAR(36) NOT NULL PRIMARY KEY,
title TEXT,
link TEXT,
author TEXT,
creation_time TIMESTAMP default (datetime('now','localtime'))
);
"""
cur.execute(sql)
cur.close()
學委特別定制之添加資料,查詢展示
"""
雷學委Demo代碼
"""
import sqlite3
import uuid
#創建資料庫連接
xuewei_conn = sqlite3.connect("blog.db")
#新建游標
cur = xuewei_conn.cursor()
fsql = """
insert into ranklist(id, title, link, author)
values
('%s', '%s', '%s', '%s');
"""
sql = fsql % (uuid.uuid1(), "??爬蟲截長屏不方便閱讀!推薦dominate直接生成報告??","https://blog.csdn.net/geeklevin/article/details/119657231", "雷學委")
print("sql %s" % sql)
cur.execute(sql)
xuewei_conn.commit() #LEIXUEWEI溫馨提示:這里記得呼叫commit,否則插入陳述句執行無效果,
sql = "select * from ranklist; "
cur.execute(sql)
data = cur.fetchall()
print("[雷學委] 熱榜文章: %s" % str(data))
cur.close()
效果如下圖:

總結
我們以上完成了建庫,建表,添加和查詢資料幾個步驟了,
Python提供的這個“內庫”sqlite3是Sqlite資料庫的操作介面,使用也很簡單,就幾分鐘的事情,
比較簡單,剛剛好適用來進行熱榜分析了,
對了,學委還有這個可以關注長期閱讀 =>雷學委趣味編程故事匯編
或者=> 雷學委NodeJS系列
這次先把熱榜文章表建好,下一篇,學委準備把熱榜放到Sqlite里面,后面進行分析,
持續學習持續開發,我是雷學委!
編程很有趣,關鍵是把技術搞透徹講明白,
創作不易,請多多支持,點贊收藏支持學委吧!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/294952.html
標籤:python
