做網(wǎng)站賣假名牌違法嗎網(wǎng)站建設(shè)建站在線建站
SQLite 數(shù)據(jù)庫(kù)模塊的游標(biāo)對(duì)象還包含了一個(gè) executescript() 方法,這不是一個(gè)標(biāo)準(zhǔn)的 API 方法,這意味著在其他數(shù)據(jù)庫(kù) API 模塊中可能沒(méi)有這個(gè)方法。但是這個(gè)方法卻很實(shí)用,它可以執(zhí)行一段 SQL 腳本。
例如,如下程序使用 executescript() 方法執(zhí)行一段 SQL 腳本:
#?導(dǎo)入訪問(wèn)SQLite的模塊 import?sqlite3#?①、打開(kāi)或創(chuàng)建數(shù)據(jù)庫(kù) #?也可以使用特殊名::memory:代表創(chuàng)建內(nèi)存中的數(shù)據(jù)庫(kù) conn?=?sqlite3.connect('first.db') #?②、獲取游標(biāo) c?=?conn.cursor() #?③、調(diào)用executescript()方法執(zhí)行一段SQL腳本 c.executescript('''insert?into?user_tb?values(null,?'武松',?'3444',?'male');?insert?into?user_tb?values(null,?'林沖',?'44444',?'male');create?table?item_tb(_id?integer?primary?key?autoincrement,?name,?price);''') conn.commit() #?④、關(guān)閉游標(biāo) c.close() #?⑤、關(guān)閉連接 conn.close()
上面程序調(diào)用 executescript() 方法執(zhí)行一段復(fù)雜的 SQL 腳本,在這段 SQL 腳本中包含了兩條 insert 語(yǔ)句,該語(yǔ)句負(fù)責(zé)向 user_tb 表中插入記錄,還使用 create 語(yǔ)句創(chuàng)建了一個(gè)數(shù)據(jù)表。
運(yùn)行上面程序,可以看到 first.db 數(shù)據(jù)庫(kù)中多了一個(gè) item_tb 數(shù)據(jù)表,user_tb 數(shù)據(jù)表被插入了兩條記錄。
此外,為了簡(jiǎn)化編程,SQLite 數(shù)據(jù)庫(kù)模塊還為數(shù)據(jù)庫(kù)連接對(duì)象提供了如下 3 個(gè)方法:
execute(sql[, parameters]):執(zhí)行一條 SQL 語(yǔ)句。
executemany(sql[, parameters]):根據(jù)序列重復(fù)執(zhí)行 SQL 語(yǔ)句。
executescript(sql_script):執(zhí)行 SQL 腳本。
讀者可能會(huì)發(fā)現(xiàn),這 3 個(gè)方法與游標(biāo)對(duì)象所包含的 3 個(gè)方法完全相同。事實(shí)正是如此,數(shù)據(jù)庫(kù)連接對(duì)象的這 3 個(gè)方法都不是 DB API 2.0 的標(biāo)準(zhǔn)方法,它們只是游標(biāo)對(duì)象的 3 個(gè)方法的快捷方式,因此在用法上與游標(biāo)對(duì)象的 3 個(gè)方法完全相同。