当先锋百科网

首页 1 2 3 4 5 6 7

在以往的博客中,我每次都不会忘记sqlite这个数据库,因为他小巧可爱,不需要安装任何服务,是个单纯的文件数据库,除此之外,还还可以很容易用于嵌入式开发,尤其基于小系统的linux。所以在android里面也是大有用途。我前面的博文分别介绍过如何在C#中QT中VC中,甚至还介绍了processing中如何调用sqlite。这里,我们介绍python中如何调用sqlite,因为要写一个应用系统多少都要进行数据库的操作。

一、创建数据库
在导入sqlite3后,创建两个对象connect和cursor(即链接和游标)之后,使用create语句即可创建一个数据库

	conn=sqlite3.connect("fistdb.db")
	csr=conn.cursor()
	csr.execute('''create table if not exists customer(ide int,name text,age int)''')

二、数据库的增删改查
数据表的增删改查是最常用的功能,这些功能都是采用sql语句来实现的,与其他平台没有任何差别,这里列出来插入和查询

csr.execute("insert into customer(ide, name, age) values (1, 'Paul', 32)")
csr.execute("select * from customer")

三、封装一个数据操作的类
封装成类以后我们便于后面调用

import sqlite3




class DBHhelper(): 
	conn=sqlite3.connect("fistdb.db")
	csr=conn.cursor()
	def __init__(self):
		self.csr.execute('''create table if not exists customer(ide int,name text,age int)''')
		print("table created successfully!")

	def addRecord(self):
		self.csr.execute("insert into customer(ide, name, age) values (1, 'Paul', 32)")
		print("record inserted successfully!")

	def getRecord(self):
		self.csr.execute("select * from customer")
		for row in self.csr:
			print("ID = ", row[0])
			print("NAME = ", row[1])
			print("AGE = ", row[2])
	# def updateRecord(self):
	# def deleteRecord(self):	  
		
	def Dbclose(self):
		self.conn.commit()
		self.conn.close()



dh = DBHhelper()
dh.addRecord()
dh.getRecord()
dh.Dbclose()

运行上述代码,可以得到下面的输出
table created successfully!
ID = 1
NAME = Paul
AGE = 32

四、参数化类和方法
上面的类基本完成了对sqlite的封装,但感觉比较死,也就是说和外面没有交互。我们知道,和外面交互的接口就是参数,所以我们要将类参数化,函数参数化。
1、类参数化
这里,我们要将数据的名称传入,就只能依靠它的构造函数__init__传参了。

class DBHhelper(): 
	conn=""
	csr=""
	def __init__(self,dbName):
		self.conn=sqlite3.connect(dbName)
		self.csr=self.conn.cursor()
		print("Database", dbName, " created successfully!")
		self.csr.execute('''create table if not exists customer(ide int,name text,age int)''')
		print("table created successfully!")

	def addRecord(self):
		self.csr.execute("insert into customer(ide, name, age) values (1, 'Paul', 32)")
		print("record inserted successfully!")

	def getRecord(self):
		self.csr.execute("select * from customer")
		for row in self.csr:
			print("ID = ", row[0])
			print("NAME = ", row[1])
			print("AGE = ", row[2])
	# def updateRecord(self):
	# def deleteRecord(self):	  
		
	def Dbclose(self):
		self.conn.commit()
		self.conn.close()



dh = DBHhelper("mydb1.db")
dh.addRecord()
dh.getRecord()
dh.Dbclose()

运行结果
Database mydb1.db created successfully!
table created successfully!
record inserted successfully!
ID = 1
NAME = Paul
AGE = 32

2、函数参数化
函数的参数化,涉及的参数比较多,尤其涉及到的字段比较多,而且灵活度也是需要考虑的,所以,我们专门用一篇博文来完成函数的参数化。请继续关注

请参看《python中sqlite的基本调用和数据库类的封装案例(2)