8.1.2 Cursor 对象

Posted Avention

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.1.2 Cursor 对象相关的知识,希望对你有一定的参考价值。

  游标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 对象的主要内容,如果未能解决你的问题,请参考以下文章

python在sqlite动态创建表源码

Android:片段 backStack

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程