[Python]_[初級]_[校驗查詢sqlite3資料庫]
場景
sqlite3
資料庫是我們開發程式時常用來儲存資料的資料庫,如果釋出產品時我們需要一些初始化資料才能正常執行產品,那麼這個資料庫測試組如何進行校驗是否正確呢?
說明
-
sqlite3
的提供了C語言
的動態庫進行操作,但是測試組並不都會使用C語言
開發測試程式的,而且使用C
開發的程式還需要進行編譯連結執行,比較慢,這會影響測試編寫測試指令碼的效率。 -
測試一般使用是
Python
作為自動化測試語言,Python3
其實也整合了sqlite3
庫作為標準模組進行了釋出,我們可以直接使用import sqlite3
就可以引用釋出,並通過參考Python sqlite3 API進行操作。 -
吐槽下
Python
的API
還是看不習慣,應該說不夠標準。類似於Java
或C/C++
的都對每個引數進行解析,之後還對返回值進行說明,比如以下的看就比較明確。Python
的卻是分段落,每個段落要仔細看內容才能知道講的什麼引數或返回值,有時候返回值並不是最後一行說明,可能穿插在某一個段落裡,不小心就錯過了。這是我不喜歡用Python
的原因之一,看API
十分費勁。
para1: xxx
para2: xxx
return: xxx
例子
- 以下例子通過開啟資料庫並統計所有表的行數來確認資料庫是否有損壞。當然如果知道校驗規則,也可以對資料進行檢查。
import sqlite3
from sqlite3.dbapi2 import OperationalError
import sys
# SQLite natively supports only the types TEXT, INTEGER, REAL,
# BLOB and NULL
def checkDb(dbPath):
# 'file:path/to/database?mode=ro'
con = None
try:
con = sqlite3.connect('file:'+dbPath+'?mode=ro', uri=True)
except OperationalError as identifier:
print("Db Path Invalid %s" % (dbPath))
return
cur = con.cursor()
sqlTables = "SELECT name FROM sqlite_master where type='table'"
# 1. 使用Row物件,逐行獲取.
print("============================")
cur.execute(sqlTables)
oneRow = cur.fetchone()
array1 = []
while(oneRow != None):
print(oneRow[0])
array1.append(oneRow[0])
oneRow = cur.fetchone()
print("============================")
# 2. 一次過獲取所有行.
cur.execute(sqlTables)
for one in cur.fetchall():
print(one[0])
print("============================")
# 3. 統計每個表的行數.
for one in array1:
t = (one,)
cur.execute("SELECT COUNT(1) FROM "+one)
print("%s(%d) " % (one,cur.fetchone()[0]))
cur.close()
if __name__ == "__main__":
checkDb(sys.argv[1])
pass
輸出
執行方式: DbChecker.py xxx.db
============================
contact
sms
photo
video
music
book
app
info
============================
contact
sms
photo
video
music
book
app
info
============================
contact(1)
sms(1)
photo(0)
video(0)
music(0)
book(0)
app(0)
info(1)
參考
相關文章
- Python資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- 上億級別資料庫查詢資料庫
- Python標準庫14 資料庫 (sqlite3)Python資料庫SQLite
- MySQL手動資料校驗+雲資料庫資料校驗MySql資料庫
- ES 20 - 查詢Elasticsearch中的資料 (基於DSL查詢, 包括查詢校驗match + bool + term)Elasticsearch
- python資料庫-MySQL資料庫高階查詢操作(51)Python資料庫MySql
- Python全棧MongoDB資料庫(資料的查詢)Python全棧MongoDB資料庫
- Python全棧 MongoDB 資料庫(資料的查詢)Python全棧MongoDB資料庫
- 資料庫高階查詢之子查詢資料庫
- Jemter查詢資料庫資料庫
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 資料庫排序查詢資料庫排序
- 查詢資料庫大小資料庫
- sqlite3資料庫操作SQLite資料庫
- 資料庫基礎查詢--單表查詢資料庫
- Peewee Sqlite3 中文模糊查詢SQLite
- python資料庫-mongoDB的高階查詢操作(55)Python資料庫MongoDB
- 使用cglib實現資料庫框架的級聯查詢CGLib資料庫框架
- 資料庫實驗室挑戰任務-初級任務資料庫
- 資料庫查詢語句資料庫
- 資料庫查詢優化資料庫優化
- 虛谷資料庫初體驗資料庫
- MySQL資料庫初體驗_gwMySql資料庫
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- 20240719資料庫關聯查詢、條件查詢資料庫
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- 資料校驗
- Logtail:像查詢資料庫一樣查詢日誌AI資料庫
- SQLServer查詢所有資料庫大小SQLServer資料庫
- 資料庫中單表查詢資料庫
- SQL Server 跨資料庫查詢SQLServer資料庫
- 【資料庫】MySQL查詢優化資料庫MySql優化
- 資料庫查詢慢的原因資料庫
- 資料庫查詢語言(DQL)資料庫
- openguass 資料庫狀態查詢資料庫
- Python—Django:關於在Django框架中對資料庫的查詢函式,查詢集和關聯查詢PythonDjango框架資料庫函式
- 在MongoDB資料庫中查詢資料(上)MongoDB資料庫