python之sqlite3

#!/usr/bin/python


import sqlite3
1   sqlite3.connect(database [,timeout ,other optional arguments])
該 API 打開(kāi)一個(gè)到 SQLite 數(shù)據(jù)庫(kù)文件 database 的鏈接。您可以使用 ":memory:" 來(lái)在 RAM 中打開(kāi)一個(gè)到 database 的數(shù)據(jù)庫(kù)連接厨剪,而不是在磁盤(pán)上打開(kāi)。如果數(shù)據(jù)庫(kù)成功打開(kāi)轮傍,則返回一個(gè)連接對(duì)象兔综。
當(dāng)一個(gè)數(shù)據(jù)庫(kù)被多個(gè)連接訪問(wèn),且其中一個(gè)修改了數(shù)據(jù)庫(kù),此時(shí) SQLite 數(shù)據(jù)庫(kù)被鎖定,直到事務(wù)提交鳞仙。timeout 參數(shù)表示連接等待鎖定的持續(xù)時(shí)間,直到發(fā)生異常斷開(kāi)連接笔时。timeout 參數(shù)默認(rèn)是 5.0(5 秒)棍好。
如果給定的數(shù)據(jù)庫(kù)名稱(chēng) filename 不存在,則該調(diào)用將創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)允耿。如果您不想在當(dāng)前目錄中創(chuàng)建數(shù)據(jù)庫(kù)借笙,那么您可以指定帶有路徑的文件名,這樣您就能在任意地方創(chuàng)建數(shù)據(jù)庫(kù)较锡。
2   connection.cursor([cursorClass])
該例程創(chuàng)建一個(gè) cursor业稼,將在 Python 數(shù)據(jù)庫(kù)編程中用到。該方法接受一個(gè)單一的可選的參數(shù) cursorClass念链。如果提供了該參數(shù)盼忌,則它必須是一個(gè)擴(kuò)展自 sqlite3.Cursor 的自定義的 cursor 類(lèi)。
3   cursor.execute(sql [, optional parameters])
該例程執(zhí)行一個(gè) SQL 語(yǔ)句掂墓。該 SQL 語(yǔ)句可以被參數(shù)化(即使用占位符代替 SQL 文本)谦纱。sqlite3 模塊支持兩種類(lèi)型的占位符:?jiǎn)柼?hào)和命名占位符(命名樣式)。
例如:cursor.execute("insert into people values (?, ?)", (who, age))
4   connection.execute(sql [, optional parameters])
該例程是上面執(zhí)行的由光標(biāo)(cursor)對(duì)象提供的方法的快捷方式君编,它通過(guò)調(diào)用光標(biāo)(cursor)方法創(chuàng)建了一個(gè)中間的光標(biāo)對(duì)象跨嘉,然后通過(guò)給定的參數(shù)調(diào)用光標(biāo)的 execute 方法。
5   cursor.executemany(sql, seq_of_parameters)
該例程對(duì) seq_of_parameters 中的所有參數(shù)或映射執(zhí)行一個(gè) SQL 命令吃嘿。
6   connection.executemany(sql[, parameters])
該例程是一個(gè)由調(diào)用光標(biāo)(cursor)方法創(chuàng)建的中間的光標(biāo)對(duì)象的快捷方式祠乃,然后通過(guò)給定的參數(shù)調(diào)用光標(biāo)的 executemany 方法。
7   cursor.executescript(sql_script)
該例程一旦接收到腳本兑燥,會(huì)執(zhí)行多個(gè) SQL 語(yǔ)句亮瓷。它首先執(zhí)行 COMMIT 語(yǔ)句,然后執(zhí)行作為參數(shù)傳入的 SQL 腳本降瞳。所有的 SQL 語(yǔ)句應(yīng)該用分號(hào)(;)分隔嘱支。
8   connection.executescript(sql_script)
該例程是一個(gè)由調(diào)用光標(biāo)(cursor)方法創(chuàng)建的中間的光標(biāo)對(duì)象的快捷方式,然后通過(guò)給定的參數(shù)調(diào)用光標(biāo)的 executescript 方法挣饥。
9   connection.total_changes()
該例程返回自數(shù)據(jù)庫(kù)連接打開(kāi)以來(lái)被修改除师、插入或刪除的數(shù)據(jù)庫(kù)總行數(shù)。
10  connection.commit()
該方法提交當(dāng)前的事務(wù)扔枫。如果您未調(diào)用該方法汛聚,那么自您上一次調(diào)用 commit() 以來(lái)所做的任何動(dòng)作對(duì)其他數(shù)據(jù)庫(kù)連接來(lái)說(shuō)是不可見(jiàn)的。
11  connection.rollback()
該方法回滾自上一次調(diào)用 commit() 以來(lái)對(duì)數(shù)據(jù)庫(kù)所做的更改短荐。
12  connection.close()
該方法關(guān)閉數(shù)據(jù)庫(kù)連接倚舀。請(qǐng)注意叹哭,這不會(huì)自動(dòng)調(diào)用 commit()。如果您之前未調(diào)用 commit() 方法瞄桨,就直接關(guān)閉數(shù)據(jù)庫(kù)連接话速,您所做的所有更改將全部丟失!
13  cursor.fetchone()
該方法獲取查詢(xún)結(jié)果集中的下一行芯侥,返回一個(gè)單一的序列,當(dāng)沒(méi)有更多可用的數(shù)據(jù)時(shí)乳讥,則返回 None柱查。
14  cursor.fetchmany([size=cursor.arraysize])
該方法獲取查詢(xún)結(jié)果集中的下一行組,返回一個(gè)列表云石。當(dāng)沒(méi)有更多的可用的行時(shí)唉工,則返回一個(gè)空的列表。該方法嘗試獲取由 size 參數(shù)指定的盡可能多的行汹忠。
15  cursor.fetchall()
該例程獲取查詢(xún)結(jié)果集中所有(剩余)的行淋硝,返回一個(gè)列表。當(dāng)沒(méi)有可用的行時(shí)宽菜,則返回一個(gè)空的列表谣膳。

#創(chuàng)建的數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表
conn = sqlite3.connect('test.db')
print ("Opened database successfully")
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
       (ID INT PRIMARY KEY     NOT NULL,
       NAME           TEXT    NOT NULL,
       AGE            INT     NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL);''')
print ("Table created successfully")
conn.commit()
conn.close()

#insert操作
conn = sqlite3.connect('test.db')  #連接庫(kù)
c = conn.cursor()
print "Opened database successfully";

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

#select操作
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully";

cursor = c.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

#update操作
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully";

c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit()
print "Total number of rows updated :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

#刪除操作
conn = sqlite3.connect('test.db')
c = conn.cursor()
print "Opened database successfully";

c.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes

cursor = conn.execute("SELECT id, name, address, salary  from COMPANY")
for row in cursor:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市铅乡,隨后出現(xiàn)的幾起案子继谚,更是在濱河造成了極大的恐慌,老刑警劉巖阵幸,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件花履,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡挚赊,警方通過(guò)查閱死者的電腦和手機(jī)诡壁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)荠割,“玉大人妹卿,你說(shuō)我怎么就攤上這事≌枪玻” “怎么了纽帖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)举反。 經(jīng)常有香客問(wèn)我懊直,道長(zhǎng),這世上最難降的妖魔是什么火鼻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任室囊,我火速辦了婚禮雕崩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘融撞。我一直安慰自己盼铁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布尝偎。 她就那樣靜靜地躺著饶火,像睡著了一般。 火紅的嫁衣襯著肌膚如雪致扯。 梳的紋絲不亂的頭發(fā)上肤寝,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音抖僵,去河邊找鬼鲤看。 笑死,一個(gè)胖子當(dāng)著我的面吹牛耍群,可吹牛的內(nèi)容都是我干的义桂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蹈垢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼慷吊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起耘婚,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罢浇,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后沐祷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體嚷闭,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年赖临,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了胞锰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兢榨,死狀恐怖嗅榕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吵聪,我是刑警寧澤凌那,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站吟逝,受9級(jí)特大地震影響帽蝶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜块攒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一励稳、第九天 我趴在偏房一處隱蔽的房頂上張望佃乘。 院中可真熱鬧,春花似錦驹尼、人聲如沸趣避。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)程帕。三九已至,卻和暖如春地啰,著一層夾襖步出監(jiān)牢的瞬間骆捧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工髓绽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妆绞。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓顺呕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親括饶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子株茶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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