亚洲免费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| 无码国产激情在线观看| 高清国产亚洲va精品| 亚洲av综合日韩精品久久| 亚洲国产精品无码aaa片| 久久久久久伊人高潮影院| 自拍亚洲一区欧美另类| 精品国产一区二区av麻豆不卡| 伊人情人色综合网站| 黑人大荫道bbwbbb高潮潮喷| 永久免费看免费无码视频| 亚洲国产综合精品一区| 亚洲av无码一区东京热久久| 日韩亚洲av无码一区二区不卡 | 69av视频在线| 白白色免费视频一区二区在线| 久久久久亚洲av成人网人人软件| 最近免费中文字幕| 国产草草影院ccyycom| 黑人巨大videos极度另类| 亚洲人妻中文字幕在线视频| 国产精品久色婷婷不卡| 人妻 日韩 欧美 综合 制服| 4444亚洲人成无码网在线观看 | 久久亚洲精品中文字幕蜜潮 | 国产精品一区二区在线观看99 | 伊人五月亚洲综合在线| 国产伦一区二区三区久久| 亚洲av熟女少妇久久| 撕开奶罩揉吮奶头视频| 国产在线不卡视频| 81久久免费精品国产色夜| 国产色欲av一区二区三区| 中文亚洲av片在线观看不卡| 人妻熟妇乱系列| 日本一区中文字幕在线播放| 国产精品免费观看调教网|