irpas技术客

python中sqlite的基本调用和数据库类的封装案例(2)_河西石头_python sqlite 类

网络投稿 4134

前面的博文我们介绍了python中sqlite封装的基本操作,完成了类的数据库名参数化封装,这篇博文将继续对数据库典型方法增删改查的具体封装逐一介绍。

一、数据表名的参数化 这里,我们还是通过类变量以及构造函数来传参

def __init__(self,dbName,tabName=''): self.conn=sqlite3.connect(dbName) self.csr=self.conn.cursor() print("Database", dbName, " created successfully!") if tabName=='': self.tabName='customer'

这里通过条件判断给了一个默认参数,我们也可以直接通过构造函数的参数列表给出默认值,但使用条件判断的方法我们会有更灵活的用法。

def __init__(self,dbName,tabName='customer'): self.conn=sqlite3.connect(dbName) self.csr=self.conn.cursor() print("Database", dbName, " created successfully!") if tabName=='': self.tabName='customer' else: self.tabName=tabName

最后,执行创建表的sql语句即可

self.csr.execute('''create table if not exists '''+self.tabName+''' (ide int,name text,age int)''')

二、插入记录的参数化 1、单条记录插入参数化

def addRecord(self,ids,name,age): self.csr.execute("insert into customer (ide,name,age) values (?,?,?) ",(ids,name,age)) print("one record inserted successfully")

我们可以采用最原始的方法调用

dh = DBHhelper("mydb1.db") dh.addRecord(13,'Doson',33)

也可以采用元组作为参数一次性传递三个参数

dh = DBHhelper("mydb1.db") info=(13,'Doson',33) dh.addRecord(*info)

单条记录的插入,我们还可以直接使用元组来作为参数,那么参数表达式列表就更干净了

def addRecord(self,infos): self.csr.execute("insert into customer values (?,?,?) ",(infos))

调用的时候也会方便一些,调用方法如下:

dh = DBHhelper("mydb1.db") info=(13,'Doson',33) dh.addRecord(info)

或者直接写

dh = DBHhelper("mydb1.db") dh.addRecord((13,'Doson',33))

2、批量插入记录参数化 批量插入的应用场景是比较多的,尤其将其他数据库的数据如Excel中的数据导入我们的应用程序就可以用批量插入,我们可以如下封装

def addRecords(self,infos): self.csr.executemany("insert into "+self.tabName+" (ide, name, age) values (?,?,?)",infos) print("record inserted successfully!")

或者可以省去字段选择

def addRecords(self,infos): self.csr.executemany("insert into "+self.tabName+" values (?,?,?)",infos) print("record inserted successfully!")

可以这样调用

dh = DBHhelper("mydb1.db") infos=((5,'Hanme',23),(1, 'Fornia', 6), (2, 'Julier', 3), (3, 'Susen', 4), (4, 'Jaky', 2), (5, 'Phinp', 3), (6, 'Sucy', 2), (7, 'Rose', 3) ) dh.addRecords(infos)

三、查询记录的参数化 1、列表查询

def getRecord(self,tabName): self.csr.execute("select * from "+tabName) records=self.csr.fetchall() if len(records)>0: return records

上面我们将查询所得的记录放入了一个列表中,那么我们调用就可以这样使用

dh = DBHhelper("mydb1.db") record=dh.getRecord('customer') for rd in record: print(rd[0],rd[1],rd[2]) dh.Dbclose()

输出结果则为: Database mydb1.db created successfully! table created successfully! 1 Paul 32 2 Mark 65 3 Luis 30 4 Kobb 24 5 Hanme 23 6 Fornia 61 7 Julier 31 8 Susen 42 9 Jaky 22 10 Phinp 32 11 Sucy 22 12 Rose 35

2、单条记录条件查询

def getRecord(self,sname): self.csr.execute('select * from '+self.tabName+' where name=?', sname) print(self.csr.fetchone())

我们还可以这样来给sql语句,将sname转换为列表

def getRecord(self,sname): self.csr.execute('select * from '+self.tabName+' where name=?', [sname]) print(self.csr.fetchone())

3、多条记录条件查询

def queryRecords(self,sname): self.csr.execute('select * from '+self.tabName+' where name=?',[sname]) records=self.csr.fetchall() print(len(records),"records be found") return records

可以这样调用

dh = DBHhelper("mydb1.db") qrs=dh.queryRecords('Julier') for rd in qrs: print(rd[0],rd[1],rd[2]) dh.Dbclose()

四、删除参数化 指定某个字段包涵特征输入

def delRecord(self,sname): self.csr.execute("delete from "+self.tabName+" where name=?",[sname]) print(sname," deleted successfully!")

本篇博文将常见的python中sqlite需要用到的增删改查都一一做了介绍。代码都在python3.8环境上运行测试通过的,可以直接使用。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python #sqlite #