今天给大家介绍如何利用sqlite3数据库来为dragonboard 410c开发进行数据存储和管理,sqlite3 是一款非常mini的数据库性能,被广泛的应用于各种嵌入式平台,包括目前的android系统都使用sqlite3来进行数据存储和管理,本文将介绍如何使用python脚本来访问sqlite3数据库系统,建立和维护自己的数据。
首先我们可以调用import sqlite3导入sqlite3数据库python模块,然后就可以编写代码来访问sqlite3数据库了,具体步骤如下:
1)连接数据库
self.DB=sqlite3.connect(“database.db”)
通过上述代码可以实现与sqlite3数据库的连接,并且返回一个维护变量,用于访问sqlite3数据库,如果database,db不存在,会自动建立一个该数据库。
2)获取cursor
self.cu=self.DB.cursor()
通过上述代码获取cursor,就可以通过该变量来访问数据库,执行相关的操作。
3)执行SQL语句
self.DB.execute(SQL)
通过上述代码可以执行SQL语句。
了解了上述操作接口,我们就可以方便的实现数据表的创建、数据读取、插入和更新等,下面通过一个具体的用户消息管理数据库的设计来介绍,这个数据库是用于我们后续要设计的智能魔镜的数据管理,大家如何在410c上构建自己的数据库代码,如下:
建立数据表
def initTable(self):
try:
#create userInfo table
self.DB.execute("create table userInfo(userID integer primary key autoincrement,
name nvarchar(50),
password nvarchar(20),
email nvarchar(50),
phone nvarchar(50),
haarValue nvarchar(50),
avatarImg nvarchar(50))"
)
#create pushInfo table
#********************pushInfo table**********************#
# infoType 0 text info, 1 video info
#
self.DB.execute("create table pushInfo(infoID integer primary key autoincrement,
ownerID integer,
pushID integer,
infoType integer,
infoSubject nvarchar(50),
infoContent nvarchar(100),
filePath nvarchar(1000),
pushtime float,
infoValidityTime float,
isTop integer,
viewWeight integer
)")
except:
print("table is already create")
同样我们可以对表中数据进行读取操作:
def getUserAvatarImg(self,userID):
format="select avatarImg from userInfo where userID==%u"
values=(userID)
querySQL=format % values
print(querySQL)
self.cu.execute(querySQL)
result=self.cu.fetchone()
if result==None:
return -1
else:
return result[0]
还可以对表中数据进行插入操作
def insertTestData(self,userInfo_n,pushInfo_n):
for userID in range(1,userInfo_n):
format="test%u"
values=(userID)
userName=format % values
format="password_test%u"
password=format % values
format="email_test%uqq.com"
userEmail=format % values
format="phone_test%u"
userPhone=format % values
format="haarValue_test%u"
haarValues=format % values
avatar=(random.randint(1,8))
format="./avatarImg/headImg/ali1/%u.gif"
avatarImg=format % avatar
format="insert into userInfo values(%u,'%s','%s','%s','%s','%s','%s')"
values=(userID,userName,password,userEmail,userPhone,haarValues,avatarImg)
insertSQL=format % values
#print(insertSQL)
self.cu.execute(insertSQL)
for infoID in range(1,pushInfo_n):
ownerID=random.randint(1,userInfo_n)
pushID=random.randint(1,userInfo_n)
infoType=random.randint(0,1)
isTop=random.randint(0,1)
viewWeight=random.randint(1,8)
format = "infoSubject_pID:%u_wID:%u"
values=(pushID,ownerID)
infoSubject=format % values
format = "infoContent_pID:%u_wID:%u"
values=(pushID,ownerID)
infoContent=format % values
filePath=""
if infoType==1:
format="./messageFile/ownerID%u/pushID%u_%u.mp4"
values=(ownerID,pushID,infoID)
filePath=format % values
else:
filePath="None"
pushTime=time.time()
format="insert into pushInfo values(%u,%u,%u,%u,'%s','%s','%s',%f,1.0,%u,%u)"
values=(infoID,ownerID,pushID,infoType,infoSubject,infoContent,filePath,pushTime,isTop,viewWeight)
insertSQL=format % values
#print(insertSQL)
self.DB.execute(insertSQL)
还可以进行更新操作,具体如下:
def setViewWeight(self,infoID,weight):
format="update pushInfo set viewWeight=%u where infoID == %u"
values=(weight,infoID)
updateSQL=format % values
self.cu.execute(updateSQL)
|