使用SQLite
SQLite是一種嵌入式數(shù)據(jù)庫,它的數(shù)據(jù)庫就是一個(gè)文件。由于SQLite本身是C寫的芥吟,而且體積很小,所以专甩,經(jīng)常被集成到各種應(yīng)用程序中钟鸵,甚至在iOS和Android的App中都可以集成。
Python就內(nèi)置了SQLite3涤躲,所以携添,在Python中使用SQLite,不需要安裝任何東西篓叶,直接使用烈掠。
在使用SQLite前,我們先要搞清楚幾個(gè)概念:
表是數(shù)據(jù)庫中存放關(guān)系數(shù)據(jù)的集合缸托,一個(gè)數(shù)據(jù)庫里面通常都包含多個(gè)表左敌,比如學(xué)生的表,班級的表俐镐,學(xué)校的表矫限,等等。表和表之間通過外鍵關(guān)聯(lián)。
要操作關(guān)系數(shù)據(jù)庫叼风,首先需要連接到數(shù)據(jù)庫取董,一個(gè)數(shù)據(jù)庫連接稱為Connection;
連接到數(shù)據(jù)庫后,需要打開游標(biāo),稱之為Cursor褪贵,通過Cursor執(zhí)行SQL語句笼痛,然后,獲得執(zhí)行結(jié)果。
Python定義了一套操作數(shù)據(jù)庫的API接口,任何數(shù)據(jù)庫要連接到Python,只需要提供符合Python標(biāo)準(zhǔn)的數(shù)據(jù)庫驅(qū)動(dòng)即可豆胸。
由于SQLite的驅(qū)動(dòng)內(nèi)置在Python標(biāo)準(zhǔn)庫中,所以我們可以直接來操作SQLite數(shù)據(jù)庫巷疼。
我們在Python交互式命令行實(shí)踐一下:
導(dǎo)入SQLite驅(qū)動(dòng):
import sqlite3
連接到SQLite數(shù)據(jù)庫
數(shù)據(jù)庫文件是test.db
如果文件不存在晚胡,會(huì)自動(dòng)在當(dāng)前目錄創(chuàng)建:
conn = sqlite3.connect('test.db')
創(chuàng)建一個(gè)Cursor:
cursor = conn.cursor()
執(zhí)行一條SQL語句,創(chuàng)建user表:
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
<sqlite3.Cursor object at 0x10f8aa260>
繼續(xù)執(zhí)行一條SQL語句嚼沿,插入一條記錄:
cursor.execute('insert into user (id, name) values ('1', 'Michael')')
<sqlite3.Cursor object at 0x10f8aa260>
通過rowcount獲得插入的行數(shù):
cursor.rowcount
1
關(guān)閉Cursor:
cursor.close()
提交事務(wù):
conn.commit()
關(guān)閉Connection:
conn.close()
我們再試試查詢記錄:
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
執(zhí)行查詢語句:
cursor.execute('select * from user where id=?', ('1',))
<sqlite3.Cursor object at 0x10f8aa340>
獲得查詢結(jié)果集:
values = cursor.fetchall()
values
[(u'1', u'Michael')]
cursor.close()
conn.close()
安裝MySQL驅(qū)動(dòng)
由于MySQL服務(wù)器以獨(dú)立的進(jìn)程運(yùn)行估盘,并通過網(wǎng)絡(luò)對外服務(wù),所以伏尼,需要支持Python的MySQL驅(qū)動(dòng)來連接到MySQL服務(wù)器忿檩。
目前,有兩個(gè)MySQL驅(qū)動(dòng):
- mysql-connector-python:是MySQL官方的純Python驅(qū)動(dòng)爆阶;
- MySQL-python:是封裝了MySQL C驅(qū)動(dòng)的Python驅(qū)動(dòng)燥透。
可以把兩個(gè)都裝上,使用的時(shí)候再?zèng)Q定用哪個(gè):
$ easy_install mysql-connector-python
$ easy_install MySQL-python
我們以mysql-connector-python為例辨图,演示如何連接到MySQL服務(wù)器的test數(shù)據(jù)庫:
導(dǎo)入MySQL驅(qū)動(dòng):
import mysql.connector
注意把password設(shè)為你的root口令:
conn = mysql.connector.connect(user='root', password='password', database='test', use_unicode=True)
cursor = conn.cursor()
創(chuàng)建user表:
cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
插入一行記錄班套,注意MySQL的占位符是%s:
cursor.execute('insert into user (id, name) values (%s, %s)', ['1', 'Michael'])
cursor.rowcount
1
提交事務(wù):
conn.commit()
cursor.close()
運(yùn)行查詢:
cursor = conn.cursor()
cursor.execute('select * from user where id = %s', ('1',))
values = cursor.fetchall()
values
[(u'1', u'Michael')]
關(guān)閉Cursor和Connection:
cursor.close()
True
conn.close()