亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Python的SQLite數(shù)據(jù)庫存儲

        2020-11-20 02:05:55張小鳳高正明
        裝備維修技術(shù) 2020年5期
        關鍵詞:數(shù)據(jù)存儲

        張小鳳 高正明

        摘要:本文主要論述了基于python的SQLite數(shù)據(jù)庫數(shù)據(jù)存儲原理、過程和用途。具體以SQLite3為例,將文本數(shù)據(jù)存儲的過程進行了闡述和說明。

        關鍵詞:反應截面、Python、數(shù)據(jù)存儲、SQLite

        引言:

        在科研學習過程中,為了防止數(shù)據(jù)被反復抓取,我們通常需要運用Python代碼從網(wǎng)站上爬取相關數(shù)據(jù),則需要將數(shù)據(jù)保存到本地,其中最常用的方式就是將數(shù)據(jù)按照設計的數(shù)據(jù)格式保存到指定的文件中,其中常用的數(shù)據(jù)類型為文本文檔txt、表格類文件csv、 excel 等。此外,還可以將數(shù)據(jù)存儲到數(shù)據(jù)庫(例如SQLite3、MySQL等)中,以便能夠便捷讀取及管理數(shù)據(jù)。

        SQLite相比于其他數(shù)據(jù)庫,其不需要單獨的進行安裝或者管理服務,即不需要配置,只需要程序調(diào)用即可,不要求為該數(shù)據(jù)庫生成一個單獨的服務器進程且不需要為其單獨配置可操作的系統(tǒng),及不需要配置服務器;其次,SQLite數(shù)據(jù)庫的存儲文件相比于其他存儲文件,其占用磁盤的空間很小,屬于輕量級的文件,且可以在多個跨平臺的系統(tǒng)中進行使用和處理,即該文件不依賴多余的硬件或者軟件配置,就可以實現(xiàn)自給自足;另外,對于ACID,SQLite數(shù)據(jù)庫的訪問和設置均是完全兼容的,即對于同一個SQLite數(shù)據(jù)庫文件而言,它容許多個程序或者程序進程、線程進行安全管理訪問;除此之外,SQLite采用的是 ANSI-C 進行編輯的,同時為了能夠更方便于用戶操作,它提供了簡潔明了的API,同時為了方便用戶查詢數(shù)據(jù)庫的信息,SQL92(SQL2)標準中大部分的查詢功能均被支持使用。

        因為Python 2.5x及以上的版本均內(nèi)置了SQLite3數(shù)據(jù)庫引擎,因此直接輸入命令“import sqlite3”即可使用。鑒于SQLite3和Python相結(jié)合的優(yōu)點,本文主要闡述如何利用Python將文本數(shù)據(jù)錄入SQLite3數(shù)據(jù)庫。

        1、python的操作步驟

        ① 首先創(chuàng)建一個與數(shù)據(jù)庫文件的連接對象connection,即利用sqlite3.open(),函數(shù);

        ② 其次創(chuàng)建光標對象cursor,即利用connection.cursor()函數(shù);

        ③ 然后使SQL語句將會被執(zhí)行,利用cursor.execute()函數(shù);

        ④ 再利用connection.commit()函數(shù)提交當前事務,或利用cursor.fetchall(),獲得查詢結(jié)果;

        ⑤ 最后將與數(shù)據(jù)庫文件的連接關閉,即利用connection.close()。

        2、具體步驟

        2.1、逐行讀取指定路徑下文件的文件內(nèi)容

        通過采用with語句和open語句的結(jié)合,可以安全地實現(xiàn)對文件的打開操作,并利用readlines()函數(shù)以便對文件的每行內(nèi)容進行快速便捷讀取,即對all的數(shù)據(jù)進行拆分。

        with open("eedl.all") as f:

        text = f.readlines()

        2.2、對數(shù)據(jù)進行解析,判斷當前行是不是目標數(shù)據(jù)行

        文件包含說明信息和反應截面數(shù)據(jù),如下圖2-1 钚元素與光子的相互作用截面數(shù)據(jù)庫(摘錄)所示,它包含的是說明、解釋型信息。第一列為MF號,第二列為MT號,第三列為該MT號下的截面數(shù)據(jù)占多少行。

        其中,其對應的反應截面數(shù)據(jù)如下圖2-2 钚元素與光子相互作用截面數(shù)據(jù)庫所示,從左至右第1、3、5列為能量點,即下圖中方框所示,第2、4、6列分別為1、3、5列的能量點對應的截面數(shù)據(jù),即下圖中橢圓所示。

        通過分析數(shù)據(jù)的存儲格式和目標數(shù)據(jù)與非目標數(shù)據(jù)的差異,發(fā)現(xiàn)目標數(shù)據(jù)在去除符號后,均為數(shù)字格式,所以首先對當前行數(shù)據(jù)進行預處理:去除當前行字符串中的符號元素。然后嘗試將字符串格式轉(zhuǎn)換為float數(shù)據(jù)類型,當轉(zhuǎn)換失敗,觸發(fā)異常,則說明當前行數(shù)據(jù)不是目標數(shù)據(jù),則繼續(xù)遍歷處理下一行,如圖2-3所示。

        2.3、目標數(shù)據(jù)行數(shù)據(jù)解析

        解析MAT、MF、MT數(shù)據(jù):MF號和MT號組合是倒數(shù)第二列,MAT號是倒數(shù)第三列,并且 MT就是3位,但是也可能會出現(xiàn)MAT號與MF和MT號粘連且與第六列的數(shù)據(jù)也粘連(如圖2-4所示)或者僅MAT號與MF和MT號粘連(如圖2-5所示)的現(xiàn)象。當MAT號與MF和MT號粘連且與第六列的數(shù)據(jù)也粘連時,共占字符大于9,其中MT號占最后三個字符,MF號占倒數(shù)第五至第三的字符,MAT占倒數(shù)第九至第五的字符;當僅MAT號與MF和MT號粘連時,第二列為MF和MT號共占字符數(shù)大于等于5,其中MT號占最后三個字符,MF號占倒數(shù)5至3位的字符,MAT號占倒數(shù)0至5位;當MAT號與MF和MT號不粘連時(如圖2-6所示),MAT為倒數(shù)第三列,MF和MT為倒數(shù)第二列,其中MT占后面三位,MF占前面兩位。因此,目標數(shù)據(jù)行數(shù)據(jù)解析如圖2-7所示。

        因為我們所需要的數(shù)據(jù)只有文件中每一行的前六個數(shù)據(jù),后面的數(shù)據(jù)為說明語句,因此對前六個數(shù)據(jù)進行拆分。由于第六列數(shù)據(jù)可能會出現(xiàn)與第七列說明語句粘連的現(xiàn)象,所以,按照“ ”進行分割后,對于前5個數(shù)據(jù),直接判斷為需要的數(shù)據(jù),對于第6個數(shù)據(jù),當其長度小于等于10,直接判斷為需要的數(shù)據(jù)。當其第一位為“-”,且長度為11,直接判斷為需要的數(shù)據(jù)。當?shù)谝晃粸椤?”且長度大于11,則在第11位處進行分割。當?shù)谝晃徊皇恰?”,且位數(shù)大于10,則再第10位進行分割。

        一行六個數(shù)據(jù),分為三組(能量點--對應截面),存儲時是將能量點與對應的截面同時存放,每一行三組數(shù)據(jù),即存放三次。因為能量為0的粒子是不存在的,所以應該舍去能量點為0的對應數(shù)據(jù),即去除異常元素。

        在存放時,需要判斷“energy”是否為0,當“energy”不為零時,則將“energy”和對應的截面數(shù)據(jù)存放在數(shù)據(jù)庫。

        2.4、數(shù)據(jù)入庫

        為了保證數(shù)據(jù)元素的純凈,首先需要檢測將要被創(chuàng)建的數(shù)據(jù)庫文件是否已經(jīng)存在,如果不存在,則創(chuàng)建數(shù)據(jù)庫文件,如果存在,則刪除原來的數(shù)據(jù)庫文件。

        在創(chuàng)建數(shù)據(jù)庫后,數(shù)據(jù)庫需要初始化:即創(chuàng)建表,如圖2-8所示。

        當對數(shù)據(jù)庫的表創(chuàng)建完畢后,即實現(xiàn)了創(chuàng)建相應數(shù)據(jù)庫的操作,此時當前目錄下可以找到對應的數(shù)據(jù)庫文件,然后插入數(shù)據(jù)。

        2.5、數(shù)據(jù)處理

        在將數(shù)據(jù)轉(zhuǎn)變成string變量時,數(shù)據(jù)末尾可能會出現(xiàn)多個0,為了數(shù)據(jù)的直觀和美觀,將末尾多余的0去除。在數(shù)據(jù)轉(zhuǎn)成string變量后,查找nRet中的“.”位置,然后記錄nRet的長度。然后判斷數(shù)據(jù)是否為小數(shù),nPosPoint=1則說明nRet中沒有“.”,可以直接存儲;nPosNotZero>1則說明nRet中有“.”,可能需要尾綴去零處理。

        利用倒敘循環(huán)遍歷nRet中小數(shù)點后從左至右連續(xù)的零的情況,即從右至左到小數(shù)點后一位依次判斷該位是否為零。參考代碼如下:

        for i in range(nLen-1, nPosPoint-1, -1):

        if nRet[i] != "0":

        nPosNotZero = i

        Break

        2.6、查詢和確認數(shù)據(jù)

        最后可以導入sqlite3模塊,然后連接數(shù)據(jù)庫利用sql語句查詢和確認數(shù)據(jù)入庫的情況。

        3、結(jié)束語

        本文的數(shù)據(jù)存儲過程適用于文本數(shù)據(jù)的存儲,以實現(xiàn)數(shù)據(jù)共享、減少數(shù)據(jù)的冗余度、同時保持數(shù)據(jù)的獨立性、實現(xiàn)數(shù)據(jù)集中控制,并確保數(shù)據(jù)的一致性和可維護性。

        【參考文獻】:

        [1]Python操作SQLite數(shù)據(jù)庫[J].朱純陽.計算機軟件與計算機應用.2015(15)

        [2]淺談SQLite數(shù)據(jù)庫技術(shù)在Android平臺的應用,[J].唐磊.計算機軟件與計算機應用.2014(09)

        猜你喜歡
        數(shù)據(jù)存儲
        大數(shù)據(jù)時代檔案信息建設的認識和實踐
        淺談電力大數(shù)據(jù)平臺關鍵技術(shù)研究與應用
        開源數(shù)據(jù)庫數(shù)據(jù)存儲的實現(xiàn)路徑分析
        基于Android開發(fā)的APP數(shù)據(jù)存儲研究
        哈希算法在物聯(lián)網(wǎng)數(shù)據(jù)存儲中的應用
        大型在線式UPS及監(jiān)控系統(tǒng)在中控機房的應用
        科技視界(2016年4期)2016-02-22 13:10:37
        日本精品啪啪一区二区| 亚洲成色在线综合网站| 国产一区二区精品尤物| 蜜桃视频中文字幕一区二区三区 | 三男一女吃奶添下面| 无码人妻系列不卡免费视频| 亚洲天堂免费成人av| 手机在线免费av资源网| 女人被狂c躁到高潮视频| h在线国产| 久久久成人av毛片免费观看| 色中文字幕在线观看视频| 艳妇臀荡乳欲伦交换h在线观看| 丰满岳妇乱一区二区三区| 久久亚洲伊人| 亚洲精品中文字幕熟女| 亚洲av中文无码乱人伦在线视色| 真实单亲乱l仑对白视频| 亚洲情a成黄在线观看动漫尤物 | 麻豆AⅤ精品无码一区二区| 国产白浆大屁股精品视频拍| 色综合久久久久综合体桃花网| 蜜臀av无码精品人妻色欲| 456亚洲人成影视在线观看| 加勒比熟女精品一区二区av| 一区二区三区视频在线观看| 亚洲精品久久久久中文字幕一福利 | 日韩中文字幕在线观看一区| 国产精品伦一区二区三级视频| 免费毛片在线视频| 亚洲码无人客一区二区三区| 色欲av永久无码精品无码蜜桃| 国产av人人夜夜澡人人爽| 草莓视频在线观看无码免费| 国产一区二区精品人妖系列在线| 久久天天躁狠狠躁夜夜2020一| 亚洲手机国产精品| 手机免费在线观看日韩av| 亚洲熟女综合色一区二区三区| 国产第19页精品| 亚洲毛片av一区二区三区|