在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Dragonboard 410c的智能魔鏡設(shè)計(jì)(2)——如何設(shè)計(jì)數(shù)據(jù)庫(kù)

            基于Dragonboard 410c的智能魔鏡設(shè)計(jì)(2)——如何設(shè)計(jì)數(shù)據(jù)庫(kù)

            作者: 時(shí)間:2017-10-11 來(lái)源:網(wǎng)絡(luò) 收藏

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

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

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

            基于上述設(shè)計(jì),本文使用Python 接口完成了創(chuàng)建該數(shù)據(jù)庫(kù)的編碼,具體代碼如下:

            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)

            在上述代碼中,我們就可以通過(guò)在主函數(shù)中構(gòu)建該類(lèi),完成對(duì)數(shù)據(jù)庫(kù)的初始化,創(chuàng)建系統(tǒng)數(shù)據(jù)庫(kù),具體如下:

            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)

            這樣,在設(shè)計(jì)其他模塊之前,我們就可以運(yùn)行該腳本,完成數(shù)據(jù)庫(kù)的創(chuàng)建,創(chuàng)建后,可以通過(guò)執(zhí)行sqlite3命令查看數(shù)據(jù)庫(kù)設(shè)計(jì)是否正確。

            同樣為了方便測(cè)試,在這里還構(gòu)建了一個(gè)自動(dòng)生成測(cè)試數(shù)據(jù)的函數(shù),具體如下,通過(guò)執(zhí)行該函數(shù)可以快速的生成測(cè)試信息填充數(shù)據(jù)庫(kù),就可以在后續(xù)設(shè)計(jì)模塊的過(guò)程中利用這些數(shù)據(jù)進(jìn)行測(cè)試。

            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)

            以上就是整個(gè)智能魔鏡的數(shù)據(jù)庫(kù)的設(shè)計(jì),后續(xù)將在該數(shù)據(jù)庫(kù)的基礎(chǔ)上,進(jìn)一步完成和完善其他功能模塊的設(shè)計(jì)。



            關(guān)鍵詞: DragonBoard410c 智能魔鏡 sqlite3

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉