Python操作SQLite簡明教程
一、SQLite簡介
SQLite是一個包含在C庫中的輕量級數(shù)據(jù)庫。它并不需要獨立的維護進程,并且允許使用非標(biāo)準(zhǔn)變體(nonstandard variant)的SQL查詢語句來訪問數(shù)據(jù)庫。一些應(yīng)用可是使用SQLite保存內(nèi)部數(shù)據(jù)。它也可以在構(gòu)建應(yīng)用原型的時候使用,以便于以后轉(zhuǎn)移到更大型的數(shù)據(jù)庫,比如PostgreSQL或者Oracle。
sqlite3模塊由Gerhard Häring編寫,提供了一個SQL接口,這個接口的設(shè)計遵循了由PEP 249描述的DB-API 2.0說明書。
二、創(chuàng)建并打開數(shù)據(jù)庫
為了使用這個模塊,必須先創(chuàng)建一個連接(Connection)對象來代表數(shù)據(jù)庫。在以下的例子中,數(shù)據(jù)將會被保存在 example.db 文件中:
conn = sqlite3.connect('example.db')
如果指定的數(shù)據(jù)庫存在,就會直接打開這個數(shù)據(jù)庫,否則將新建一再打開。
也可以提供專用名 :memory: 來在內(nèi)存中建立數(shù)據(jù)庫。
三、數(shù)據(jù)庫連接對象
一旦擁有了連接(Connection)對象,就可以創(chuàng)建游標(biāo)(Cursor)對象并調(diào)用他的execute()方法來執(zhí)行SQL語句:
# Create table
c.execute('''CREATE TABLE stocks
(date text, trans text, symbol text, qty real, price real)''')
# Insert a row of data
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
# Save (commit) the changes
conn.commit()
# We can also close the connection if we are done with it.
# Just be sure any changes have been committed or they will be lost.
conn.close()
保存后的數(shù)據(jù)是持久的,并且可以在以后的訪問中可用。
四、增刪改查
1.建(create)表
上面語句創(chuàng)建了一個叫catalog的表,它有一個主鍵id,一個pid,和一個name,name是不可以重復(fù)的,以及一個nickname默認為NULL。
2.刪除表(DROP),清空表(TRUNCATE)
上面語句將catalog表刪除。
另外SQLite中沒有清空表的操作,使用如下方式替代:
3.插入(insert)數(shù)據(jù),更改(uptate)數(shù)據(jù)
通常SQL語句中會用到python變量作為值(value)。不建議直接使用python的字符串運算來構(gòu)造查詢語句,因為這樣是不安全的,會使你的程序容易受到SQL注入攻擊。
可以使用DB-API提供的參數(shù)代換。在想使用值(value)的地方放置一個'?'作為占位符,然后提供一個由值(value)組成的元組作為游標(biāo)(cursor)中execute()方法的第二個參數(shù)。(其他的數(shù)據(jù)庫模塊可能使用別的占位符,比如 '%s' 或者 ':1')
# Larger example that inserts many records at a time
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
c.execute("UPDATE catalog SET trans='SELL' WHERE symbol = 'IBM'")
4.查詢(select)數(shù)據(jù)
正如前面所說,提倡使用元組進行操作。
symbol = 'RHAT'
c.execute("SELECT * FROM stocks WHERE symbol = '%s'" % symbol)
# Do this instead
t = ('RHAT',)
c.execute('SELECT * FROM stocks WHERE symbol=?', t)
print c.fetchone()
5.刪除(delete)數(shù)據(jù)
t=('RHAT')
c.execute("DELETE * FROM stocks WHERE symbol=?", t)
- Python操作sqlite3快速、安全插入數(shù)據(jù)(防注入)的實例
- Python標(biāo)準(zhǔn)庫之sqlite3使用實例
- Python3實現(xiàn)連接SQLite數(shù)據(jù)庫的方法
- python操作數(shù)據(jù)庫之sqlite3打開數(shù)據(jù)庫、刪除、修改示例
- python從sqlite讀取并顯示數(shù)據(jù)的方法
- Python SQLite3數(shù)據(jù)庫操作類分享
- Python Sqlite3以字典形式返回查詢結(jié)果的實現(xiàn)方法
- Python使用flask框架操作sqlite3的兩種方式
- Python實現(xiàn)讀取TXT文件數(shù)據(jù)并存進內(nèi)置數(shù)據(jù)庫SQLite3的方法
- Python連接SQLite數(shù)據(jù)庫并進行增冊改查操作方法詳解
相關(guān)文章
解決90%的常見問題的8個python NumPy函數(shù)
這篇文章主要為大家介紹了解決90%的常見問題的8個python NumPy函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-06-06
狀態(tài)機的概念和在Python下使用狀態(tài)機的教程
這篇文章主要介紹了狀態(tài)機的概念和在Python下使用狀態(tài)機的教程,本文來自于IBM官方開發(fā)者技術(shù)文檔,需要的朋友可以參考下2015-04-04
python語言線程標(biāo)準(zhǔn)庫threading.local解讀總結(jié)
在本篇文章里我們給各位整理了一篇關(guān)于python threading.local源碼解讀的相關(guān)文章知識點,有需要的朋友們可以學(xué)習(xí)下。2019-11-11

