[Python常用庫]sqlite

sqlite 是一個(gè)嵌入到應(yīng)用程序內(nèi)的關(guān)系數(shù)據(jù)庫,可以將數(shù)據(jù)保存到內(nèi)存或文件
中,數(shù)據(jù)直接在進(jìn)程內(nèi)部通過本地API訪問,沒有網(wǎng)絡(luò)通信,適合開發(fā)本地應(yīng)用。

sqlite庫不支持ORM,要想使用ORM,推薦的庫是SQLALchemy

import sqlite3


def test_sqlite3():
    # 連接到內(nèi)存數(shù)據(jù)庫,這里可以指定一個(gè)本地文件名來創(chuàng)建數(shù)據(jù)庫連接
    conn = sqlite3.connect(':memory:')

    # 獲得游標(biāo)
    c = conn.cursor()

    # 創(chuàng)建數(shù)據(jù)庫
    c.execute('''CREATE TABLE stocks
             (date text, trans text, symbol text, qty real, price real)''')

    # 插入一行記錄
    c.execute("INSERT INTO stocks VALUES "
              "('2006-01-05','BUY','RHAT',100,35.14)")

    # 查詢記錄
    # 注意,文檔中警告過不要用下面這種方式拼裝查詢語句
    # symbol = 'RHAT'
    # c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
    # 而應(yīng)該用?方式,讓sql引擎來做這個(gè)工作,用元組來傳遞參數(shù)
    c.execute('SELECT * FROM stocks WHERE symbol=?', ('RHAT',))
    print c.fetchone()

    # 游標(biāo)數(shù)據(jù)讀取后,其內(nèi)部會(huì)自動(dòng)移動(dòng)到下一行,因此要重新獲取
    c.execute('SELECT * FROM stocks WHERE symbol=?', ('RHAT',))
    print c.fetchall()

    c.execute('SELECT * FROM stocks WHERE symbol=?', ('RHAT',))
    for x in c:
        print x

    # execute返回的就是游標(biāo)本身
    q = c.execute('SELECT * FROM stocks WHERE symbol=?', ('RHAT',))
    assert q == c

    # 提交
    conn.commit()

    # 關(guān)閉數(shù)據(jù)庫連接
    conn.close()

原文地址:http://www.isware.cn/python-modules/01-data-persistence-and-exchange/sqlite/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容