Python讀取和處理文件后綴為".sqlite"的數(shù)據(jù)文件

最近在弄一個(gè)項(xiàng)目分析的時(shí)候,看到有一個(gè)后綴為".sqlite"的數(shù)據(jù)文件亩进,由于以前沒怎么接觸過犹褒,就想著怎么用python來打開并進(jìn)行數(shù)據(jù)分析與處理,于是稍微研究了一下莺奸。

SQLite是一款非常流行的關(guān)系型數(shù)據(jù)庫(kù),由于它非常輕盈冀宴,因此被大量應(yīng)用程序采用憾筏。

像csv文件一樣,SQLite可以將數(shù)據(jù)存儲(chǔ)于單個(gè)數(shù)據(jù)文件花鹅,以便方便的分享給其他人員氧腰。許多編程語言都支持SQLite數(shù)據(jù)的處理,python語言也不例外刨肃。

sqlite3是python的一個(gè)標(biāo)準(zhǔn)庫(kù)古拴,可以用于處理SQLite數(shù)據(jù)庫(kù)。

用sqlite3創(chuàng)建和操作數(shù)據(jù)庫(kù)文件

對(duì)于數(shù)據(jù)庫(kù)的SQL語句真友,本文會(huì)用到最基礎(chǔ)的SQL語句黄痪,應(yīng)該不影響閱讀。如果想進(jìn)一步了解盔然,可參考如下網(wǎng)址:
http://www.w3school.com.cn/sql/index.asp

下面桅打,我們來應(yīng)用salite3模塊來創(chuàng)建SQLite數(shù)據(jù)文件,以及進(jìn)行數(shù)據(jù)讀寫操作愈案。主要的步驟如下:

  1. 與數(shù)據(jù)庫(kù)建立連接挺尾,創(chuàng)建數(shù)據(jù)庫(kù)文件(.sqlite文件)
  2. 創(chuàng)建游標(biāo)(cursor)
  3. 創(chuàng)建數(shù)據(jù)表(table)
  4. 向數(shù)據(jù)表中插入數(shù)據(jù)
  5. 查詢數(shù)據(jù)

演示代碼如下:

import sqlite3

with sqlite3.connect('test_database.sqlite') as con:
    c = con.cursor()
    c.execute('''CREATE TABLE test_table
    (date text, city text, value real)''')
    for table in c.execute("SELECT name FROM sqlite_master WHERE type='table'"):
        print("Table", table[0])
    c.execute('''INSERT INTO test_table VALUES
    ('2017-6-25', 'bj', 100)''')
    c.execute('''INSERT INTO test_table VALUES
    ('2017-6-25', 'pydataroad', 150)''')
    c.execute("SELECT * FROM test_table")
    print(c.fetchall())
Table test_table
[('2017-6-25', 'bj', 100.0), ('2017-6-25', 'pydataroad', 150.0)]

關(guān)于SQLite數(shù)據(jù)庫(kù)中數(shù)據(jù)的可視化預(yù)覽,有很多的工具可以實(shí)現(xiàn)站绪,我這里使用的是SQLite Studio遭铺,是一個(gè)免費(fèi)使用的工具,不需要安裝恢准,下載下來就可以使用魂挂,有興趣的同學(xué)可以參考下面的鏈接。

https://sqlitestudio.pl/index.rvt?act=download

數(shù)據(jù)預(yù)覽的效果如下:

1.jpg
2-s.jpg

用pandas來讀取sqlite數(shù)據(jù)文件

從上面代碼的運(yùn)行結(jié)果可以看出馁筐,數(shù)據(jù)查詢的結(jié)果是一個(gè)由tuple組成的list涂召。python的list數(shù)據(jù)在進(jìn)行進(jìn)一步的數(shù)據(jù)處理與分析時(shí),可能會(huì)不太方便敏沉」可以想象一下,假設(shè)如果數(shù)據(jù)庫(kù)的表格中一共有100萬行或者更多數(shù)據(jù)赦抖,從list中循環(huán)遍歷獲取數(shù)據(jù)舱卡,效率會(huì)比較低辅肾。

這時(shí)队萤,我們可以考慮用pandas提供的函數(shù)來從SQLite數(shù)據(jù)庫(kù)文件中讀取相關(guān)數(shù)據(jù)信息,并保存在DataFrame中矫钓,方便后續(xù)進(jìn)一步處理要尔。

Pandas提供了兩個(gè)函數(shù)舍杜,均可以讀取后綴為“.sqlite”數(shù)據(jù)文件的信息。

  • read_sql()
  • read_sql_query()
import pandas as pd

with sqlite3.connect('test_database.sqlite') as con:

    # read_sql_query和read_sql都能通過SQL語句從數(shù)據(jù)庫(kù)文件中獲取數(shù)據(jù)信息
    df = pd.read_sql_query("SELECT * FROM test_table", con=con)
    # df = pd.read_sql("SELECT * FROM test_table", con=con)

    print(df.shape)
    print(df.dtypes)
    print(df.head())
(2, 3)
date      object
city      object
value    float64
dtype: object
        date        city  value
0  2017-6-25          bj  100.0
1  2017-6-25  pydataroad  150.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赵辕,一起剝皮案震驚了整個(gè)濱河市既绩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌还惠,老刑警劉巖饲握,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚕键,居然都是意外死亡救欧,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門锣光,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笆怠,“玉大人,你說我怎么就攤上這事誊爹〉潘ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵频丘,是天一觀的道長(zhǎng)办成。 經(jīng)常有香客問我,道長(zhǎng)搂漠,這世上最難降的妖魔是什么诈火? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮状答,結(jié)果婚禮上冷守,老公的妹妹穿的比我還像新娘。我一直安慰自己惊科,他們只是感情好拍摇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馆截,像睡著了一般充活。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜡娶,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天混卵,我揣著相機(jī)與錄音,去河邊找鬼窖张。 笑死幕随,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宿接。 我是一名探鬼主播赘淮,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辕录,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了梢卸?” 一聲冷哼從身側(cè)響起走诞,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛤高,沒想到半個(gè)月后蚣旱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戴陡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年姻锁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猜欺。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡位隶,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出开皿,到底是詐尸還是另有隱情涧黄,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布赋荆,位于F島的核電站笋妥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏窄潭。R本人自食惡果不足惜春宣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫉你。 院中可真熱鬧月帝,春花似錦、人聲如沸幽污。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽距误。三九已至簸搞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間准潭,已是汗流浹背趁俊。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刑然,地道東北人寺擂。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親沽讹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容