1. 程式人生 > >8.1.2 Cursor 對象

8.1.2 Cursor 對象

介紹 ast lose 創建 and div 生成器 簡潔 +=

  遊標Cursor也是sqlite3模塊中比較重要的一個類,下面簡單介紹下Cursor對象的常用方法。

  1 execute(sql[,parameters])

  該方法用於執行一條SQL語句,下面的代碼演示了用法,以及為SQL語句傳遞參數的兩種方法,分別使用問號好命名變量作為占位符。

 1 import sqlite3
 2 
 3 conn = sqlite3.connect(example.db)
 4 cur = conn.cursor()
 5 cur.execute(create table people(name_last,age))
 6 who = Dong
7 age = 38 8 9 #使用問號做占位符 10 cur.execute(insert into people values(?,?),(who,age)) 11 conn.commit() 12 #使用命令變量做占位符 13 cur.execute(select * from people where name_last = :who and age = :age,{"who":who,"age":age}) 14 print(cur.fetchone()) #(‘Dong‘, 38) 15 conn.close()

  2 executemany(sql,seq_of_parameters)

  該方法用來對於所有給定參數執行用一個SQL語句,參數序列可以使用不同的方式產生,例如下面的代碼使用叠代來產生參數序列:

 1 import sqlite3
 2 
 3 #自定義叠代器,按順序生成小寫字母
 4 class IterChars:
 5     def __init__(self):
 6         self.count = ord(a)
 7 
 8     def __iter__(self):
 9         return self
10 
11     def __next__(self):
12         if self.count > ord(
z): 13 raise StopIteration 14 self.count += 1 15 return (chr(self.count - 1),) 16 17 18 conn = sqlite3.connect(:memory:) 19 cur = conn.cursor() 20 cur.execute(create table characters(c)) 21 22 #創建叠代器對象 23 theIter = IterChars() 24 25 #插入記錄,每次插入一個英文小寫字母 26 cur.executemany(insert into characters(c) values(?),theIter) 27 conn.commit() 28 #讀取並顯示所有記錄 29 cur.execute(select * from characters) 30 31 #讀取並顯示所有記錄 32 print(cur.fetchall()) 33 conn.close()

  

  下面的代碼則使用了更為簡潔的生成器來產生參數:

8.1.2 Cursor 對象