上週,推送了一篇:

“ 收藏!用Python一鍵批次將任意結構的CSV檔案匯入MySQL資料庫。”

本文是上篇的姊妹篇,只不過是把資料庫換成了 Python 自帶的SQLite3。

使用 SQLite3 的優勢還是很明顯的,它是一種嵌入式資料庫,只是一個

。db

格式的檔案,無需安裝、配置和啟動,移植性非常好。是輕量級資料的不二之選!推薦看一下我寫的入門文章:

“ 收藏!Python內建的輕量級資料庫竟如此好用!全網最實用sqlite3實戰專案。”

上一篇介紹的是一鍵批次匯入 MySQL 資料庫,這一篇介紹的是一鍵批次匯入 SQLite3 資料庫,兩者程式碼 90% 相同。所以本文重點介紹不同之處。

先看一下程式執行效果:

收藏!用Python一鍵批次將任意結構的CSV檔案匯入SQLite資料庫。

兩篇文章使用的資料來源是一模一樣的。經本人親測,匯入到 SQLite3 的速度要比匯入到 Mysql 快的多。這也進一步驗證了,處理輕量級資料,SQLite 要便捷、快速的多。

下面我們就來看看兩者程式碼的主要不同吧:

1. 資料庫連線方式不同

try:

conn = conn = sqlite3。connect(path+‘\csv。db’)

cur = conn。cursor()

print(‘資料庫連線成功!’)

print(‘ ’)

except:

print(‘資料庫連線失敗!’)

SQLite3 資料庫的連線方式更簡單,直接指明路徑即可。

2. 程式碼最佳化,提高通用性

2.1 優化了資料庫表名稱

for file in files:

if file。split(‘。’)[-1] in [‘csv’]:

i += 1

filename = ‘`’ + ‘tab_’ + file。split(‘。’)[0]。replace(‘-’, ‘_’)。replace(‘ ’, ‘_’)。replace(‘:’,‘’) + ‘`’

透過遍歷每一個 CSV 檔案的名稱,計算出一個數據庫表名稱,確保計算出的表名稱符合資料庫規則:

filename = ‘`’ + ‘tab_’ + file。split(‘。’)[0]。replace(‘-’, ‘_’)。replace(‘ ’, ‘_’)。replace(‘:’,‘’) + ‘`’

首先,在資料庫表名稱前加上

tab_

,避免純數字作為表名稱時程式報錯;其次,替換了

-

空格

;最後,在資料庫表名稱前後加上一對反引號。

2.2 優化了資料庫表字段名稱

types = f。ftypes

field = [] #用來接收欄位名稱的列表

table = [] #用來接收欄位名稱和欄位型別的列表

for item in columns:

item1 = ‘`’+item。replace(‘-’, ‘_’)。replace(‘ ’, ‘_’)。replace(‘:’,‘’)+‘`’

if ‘int’ in types[item]:

char = item1 + ‘ INT’

elif ‘float’ in types[item]:

char = item1 +‘ FLOAT’

elif ‘object’ in types[item]:

char = item1 +‘ VARCHAR(255)’

elif ‘datetime’ in types[item]:

char = item1 + ‘ DATETIME’

else:

char = item1 + ‘ VARCHAR(255)’

table。append(char)

field。append(item)

tables = ‘,’。join(table)

#print(tables)

fields = ‘,’。join(field)

#print(fields)

和資料庫表名稱最佳化一樣,替換了

-

空格

等特殊符號,並在每一個欄位名稱前後加上一對反引號。

3. SQL 語句不同

3.1 建立自增主鍵語句不同

建立 MySQL 資料庫自增主鍵的語句是:

id0 int PRIMARY KEY NOT NULL auto_increment

;建立 SQLite 資料庫自增主鍵的語句是:

id0 INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL

兩者略有不同,SQLite 是用

AUTOINCREMENT

建立自增主鍵。

3.2 插入資料的語句不同

values = f。values。tolist()

s = ‘,’。join([‘?’ for _ in range(len(f。columns))])

insert_sql = ‘insert into {}({}) values({})’。format(filename,fields,s)

cur。executemany(insert_sql, values)

conn。commit()

主要區別是:SQLite 使用

來佔位。

以上就是一鍵批次將任意結構的CSV檔案匯入SQLite資料庫與MySQL資料庫程式碼的主要不同點。如果您還沒有看過上一篇文章,強烈建議去看一下!上篇文章程式碼實現思路方面講解的更詳細:

“ 收藏!用Python一鍵批次將任意結構的CSV檔案匯入MySQL資料庫。”

下面給大家介紹一款 SQLite 資料視覺化工具:

SQLiteStudio

是一款綠色小巧的 SQLite 資料庫視覺化工具,功能強大,操作簡單。

我們可以將上文自動匯入生成的資料庫

csv。db

新增到

SQLiteStudio

中,可以很方便的檢視到資料庫中有哪些表,以及表結構和資料。見下圖:

收藏!用Python一鍵批次將任意結構的CSV檔案匯入SQLite資料庫。

我們也可以開啟一個

SQL編輯器

,輸入 SQL 命令,執行你想要的操作。見下圖:

收藏!用Python一鍵批次將任意結構的CSV檔案匯入SQLite資料庫。

SQLiteStudio

還有很多好用的功能,本文不再介紹,感興趣的朋友可以研究一下。

本文完,謝謝閱讀!

★ 本文

原始碼

資料來源

SQLiteStudio軟體

已上傳,智慧演示微信公眾號後臺回覆

csv2sqlite

即可獲取下載連結。

不知道大家對SQLite資料庫是否感興趣呢,歡迎在下方留言。

猜你喜歡:

7步完成MySQL配置,極簡教程,還不來試試?

我用 Python 處理3萬多條資料,只要幾秒鐘……

讓你的程式學會自己戴'口罩'!讓你的程式更聰明?

收藏!用Python一鍵批次將任意結構的CSV檔案匯入MySQL資料庫。