8.1.2 Cursor 對象
阿新 • • 發佈:2018-04-28
介紹 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 對象