新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Dragonboard 410c的智能魔鏡設計(2)——如何設計數據庫

        基于Dragonboard 410c的智能魔鏡設計(2)——如何設計數據庫

        作者: 時間:2017-10-11 來源:網絡 收藏

        本篇blog將在設計(1)整體方案的基礎上,完成對基于dragonboard 410c的的數據庫的設計,首先我們根據方案分析,可以知道,在上需要保持用戶信息、保持消息信息,因此,基本可以構建一個用戶表userInfo和一個消息表pushInfo兩個表就可以對整個智能魔鏡的數據進行管理,可以方便的調用和存儲相關的數據,具體的數據庫設計方案如下:

        本文引用地址:http://www.104case.com/article/201710/365589.htm

        上述兩個表中,userInfo表用于存儲系統中的用戶信息,主要包括ownerID, 用戶ID,Name,用戶名,password 用戶密碼,保存的是MD5密碼摘要信息,email,用戶郵箱、phone 用戶手機、haarValue,用戶臉部特征值,pushInfo表為推送消息表,系統中所有的推送消息都被保存在該表中,其中infoID為消息的ID,ownerID為消息的擁有者的ID,表示這條消息是屬于哪個用戶的,系統將在后續根據這個值將消息推送給該用戶,pushID,推送者,表示這條消息是由哪個用戶推送過來的,系統根據該值識別推送消息的用戶,infoType,消息類型,該值為0或者1 ,位0的時候表示是普通的文本消息,填寫infoSubject和infoContent兩個項目即可,為1的時候為視頻或者音頻消息,此時視頻文件路徑將被保存到filePath字段中,pushTIme,表示推送的時間,infoValidityTIme表示的是消息的有效期,istop表示消息是否置頂,如果該值為1表示消息置頂,將優先推送該消息,viewWeight表示消息的顯示權值,顯示完的消息權值將減少為0不再顯示。

        基于上述設計,本文使用Python 接口完成了創建該數據庫的編碼,具體代碼如下:

        import
        import os.path
        import random
        import TIme
        #MagicMirrorDB = .connect(./MaigicMirrorDB.db)
        #MagicMirrorDB.execute()
        #create userInfo
        class MagicMirrorDB:
        def __init__(self,dbPath):
        self.DB=sqlite3.connect(dbPath)
        self.cu=self.DB.cursor()
        self.DB.execute()
        #self.initTable()
        #self.insertTestData(5,20)


        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
        ))
        # self.DB.execute(create table systemStatus(statusName nvarchar(30),statusValue integer,statusParam integer ,statusDiscirption nvarchar(50)))

        except:
        print(table is already create)

        在上述代碼中,我們就可以通過在主函數中構建該類,完成對數據庫的初始化,創建系統數據庫,具體如下:

        if __name__==__main__:
        import sys
        MMDB=MagicMirrorDB(./MagicMirrorDB.db)
        print(MMDB.getUserAvatarImg(1))
        result=MMDB.getUserVideoMessageList(1)
        print(result)
        result2=MMDB.getTextMessageList(1)
        print(result2)
        sys.exit(0)

        這樣,在設計其他模塊之前,我們就可以運行該腳本,完成數據庫的創建,創建后,可以通過執行sqlite3命令查看數據庫設計是否正確。

        同樣為了方便測試,在這里還構建了一個自動生成測試數據的函數,具體如下,通過執行該函數可以快速的生成測試信息填充數據庫,就可以在后續設計模塊的過程中利用這些數據進行測試。

        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)

        以上就是整個智能魔鏡的數據庫的設計,后續將在該數據庫的基礎上,進一步完成和完善其他功能模塊的設計。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 桐梓县| 陆川县| 济阳县| 镇原县| 宾阳县| 黑龙江省| 汉中市| 仪征市| 新营市| 石门县| 蒲城县| 高台县| 景泰县| 陈巴尔虎旗| 镇安县| 收藏| 新平| 额敏县| 易门县| 永靖县| 石渠县| 雷州市| 射阳县| 保德县| 曲水县| 繁昌县| 吉木乃县| 安龙县| 大名县| 石阡县| 四平市| 德江县| 常州市| 马关县| 岫岩| 巢湖市| 丹江口市| 玛多县| 丹东市| 泰安市| 梁山县|