如何建立一個金融資料庫
在春節的時候立下flag,要寫一個搭建自己資料庫的小教程,所以這次在我自己寫的項目上做了一些小修改,然後寫一個小教程給大家參考,感興趣的同學可以自己動手做一做,還是很有意思的!
我將本次教程分為七個部分:
一、準備工作
環境要求:
首先第一個要求可能比較麻煩,畢竟伺服器這種聽起來很「高端」的「設備」。大家可能接觸的並不多,但現在因為各類雲伺服器商的出現,普通人也可以很輕鬆的接觸到伺服器了,目前大家可以去租目前市面上幾個大廠的學生機,價格也不是很貴,自己的電腦我覺得很難做到一天24小時一直保持開機,但是伺服器完全可以很長一段時間不關機。而在系統方面,為什麼不選擇大家比較熟悉的Windows呢?(伺服器的Windows一般是Windows Sever系統,這個和大家用的Windows系統還是有些區別的),因為學生機一般配置比較差,如果帶Windows系統會比較吃力,遠程連接操作起來也比較麻煩,而且目前我還沒有找到一款可以在移動端遠程連接Windows的軟體,對於我們的管理非常不方便。而Linux系統大家可能比較陌生,大家在選擇伺服器系統的時候,可能會發現似乎沒有一個叫做Linux系統的系統,但是可以看到Ubuntu,centos,deepin,debian等,這些都屬於Linux操作系統,是Linux的發行版本,具體的關係解釋大家可以自己去百度,這裡比較推薦centos6或centos7。
二、遠程連接伺服器以及配置MySQL
在大家配置好伺服器以後,就可以使用上面提到的Xshell5軟體(可去官網下載免費學生版)來遠程連接我們的伺服器了,連接也比較簡單,在主機處輸入自己伺服器的公網IP
圖1:xshell5配置界面
然後點擊用戶身份驗證,用戶名一般為root,密碼為自己在開通伺服器時設定的密碼,然後確定連接即可。如果連接成功則會出現如下圖:
圖2:伺服器SSH成功
此時證明我們已經成功的連接上了我們的伺服器,接下來具體配置伺服器的工作,大家可以參考
https://www.linuxidc.com/Linux/2014-12/111030.htm
中有關MySQL配置的部分和剛開始的防火牆部分(此部分很重要,如果沒有配置會影響到後續的遠程連接!!!),寫得很詳細。配置好MySQL和防火牆以後,我們的伺服器上就有了自己的資料庫了。
三、FTP的配置工作
這一步其實是一個非必須的步驟,因為大家大可以直接在伺服器上直接開始寫我們的獲取數據的代碼,但是考慮到大家對於Linux的熟悉程度以及對於Linux系統上編輯器Vim的使用可能不怎麼熟練,所以還是選擇利用FTP作為載體,將我們在本地寫好的py文件直接上傳至我們的伺服器,不過這樣做修改和調試會比較麻煩,所以建議有時間的同學還是自學一下Linux系統,對於量化來說,掌握Linux我覺得還是比較重要的,關於Linux系統里FTP的配置工作,大家可以參考這篇
https://www.linuxidc.com/Linux/2016-07/133319.htm
裡面對於Linux如何配置FTP講的非常詳細。等我們在伺服器上配置好vsftp,這是後我們就可以通過filezilla這個軟體來遠程連接我們的FTP。
圖3:配置filezilla
在主機處輸入伺服器公網ip,用戶名為剛才設置的FTP用戶名,密碼為剛才設置的密碼,埠可不填,若連接失敗,可使用22埠重試。如果連接成功,在軟體右側應該會出現伺服器目錄。
圖4:伺服器目錄
此時說明我們連接成功。
四、anaconda2.7的下載與配置
如果大家按照上文中給出的鏈接中的教程配置MySQL或FTP等,就會發現在Linux下安裝軟體和Windows區別很大,一般通過yum源來安裝(有點類似IOS的App Store),但是anaconda需要通過自己手動去下載安裝,我這裡直接給出命令:
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-5.1.0-Linux-x86.sh
大家直接在命令行中粘帖即可,然後回車運行即可,下載完成後,命令行中敲入Anaconda2-5.1.0-Linux-x86.sh按照提示安裝即可。然後在命令行中使用pip 命令安裝tushare、schedule這兩個包即可,忘了如何使用pip命令的同學可以參考下前面的教程,Linux下不需要像Windows那樣需要將pip.exe拖入cmd,而是直接在命令行里輸入pip install即可。此時我們的Python環境基本配置完畢。
五、創建資料庫
這裡我們要用到Navicat 12 for MySQL這個軟體,這是目前來說最好用的資料庫可視化軟體之一,打開以後點擊左上角的連接,選擇MySQL,後出現:
圖5:配置Navicat 12 for MySQL
連接名大家可以隨意取,將主機改為伺服器公網IP,埠不需要改密碼輸入MySQL的密碼即可遠程連接,連接成功後可以看到在軟體左側
圖6:資料庫
這一排都是資料庫(圖中大部分是我自己創建的),大家可以右鍵新建一個資料庫,資料庫的名字可以自己取,但是為了不必要的麻煩,最好是大寫英文,其他參數參考:
圖7:配置Navicat 12 for MySQL
到此我們可以利用Navicat 12 for MySQL來管理我們的資料庫了,以後大家熟悉以後可以在服務期內直接管理。
六、寫出Python文件
到這一步伺服器的工作可以告一段落了,接下來我們在本地打開pycharm,新建一個py文件,然後import這幾項:
圖8:引用
前面的小教程里我們都是直接寫的,並沒有涉及到函數的概念,這一次因為還要牽扯到在伺服器上定時運行,所以我們這次不能將獲取數據的命令直接寫出來,而是要先寫出一個函數,關於Python中函數的介紹,並不是我們這次的重點,以後可以在Python中單獨講一下,這次只要會用即可,舉一個例子:
圖9:構造函數
這就是我們創建一個函數的過程,創建了daystock(函數名可以自己取,但不要使用Python的內置函數)這個函數,這個函數的功能就是獲取每日交易的股票的當日行情(馬賽克部分是我的伺服器地址和資料庫密碼,不是重點~)第二行大家應該比較熟悉,就是tushare包中獲取當日交易股票日行情的命令,第三行與我們以前講過的存儲為Excel文件的有所不同,這裡第三行為遠程連接資料庫的一行代碼,具體用法為:
engine=create_engine("mysql://root:資料庫密碼@伺服器公網IP/資料庫名?charset=utf8")
這行命令中,大家其他都不需要改,只需要將我填入中文的部分修改為自己的內容即可,資料庫名即為剛才大家在第五步中創建的資料庫名稱。
第四行為獲取當天的日期,並以XXXX-XX-XX的格式保存為todaytime變數,第五行為保存的命令,括弧內第一個變數為命名數據名稱,在此我建議以日期作為名字。
大家可以按照上述構建函數的方法來寫其他函數,獲取日更新的數據,方法基本都相同,其他獲取的命令可以參考以前的教程或者tushare作者自己的介紹網站。接下來就是設置每天運行的內容了,可以利用schedule這個模塊,我們目的是讓程序每個工作日在晚上十一點時自動運行我們獲取數據的函數,將所有數據保存在資料庫里,代碼為
圖:10:構造job函數
第一行為寫一個job函數,內容為我們剛才寫的函數,因為例子中我只寫了一個daystock的函數,所以只有一個,大家自己做的時候可以將自己寫的其他函數加在裡面(不要忘記括弧),其他的按照上面寫的即可。
七、上傳伺服器並配置
將剛才寫好的py文件利用filezilla上傳至伺服器根目錄,例如我們的文件名為test.py,然後在xshell5的命令行中輸入ls命令查找是否存在test.py文件,若不存在則需要找到剛才通過ftp上傳的位置 然後利用cd命令進入該目錄,然後 利用ls命令查找,查找到目標文件後,我們為了使伺服器在斷開ssh後依然可以運行程序而不是殺死進程,這裡要使用到一個叫做screen的工具,在命令行內輸入下面命令:
yum install screen
然後回車並等待提示輸入y/N,輸入y後等待安裝完成後,在命令行輸入screen後,可以看到進入到一個新的命令行界面,在新的命令行界面進入py文件所在的目錄,然後 輸入命令(例如py文件名為test.py):
python test.py
然後按下Ctrl+A後再 按下D鍵,此時會出現[detached]如下:
圖11:輸出結果
此時說明我們的程序已經在後台掛起,此時可以關閉xshell5且不會殺死進程,。
到此,我們的金融資料庫基本就大功告成啦,大家可以利用Navicat 12 for MySQL來查看獲取的數據,如果Linux命令比較熟悉的話,可以直接在手機上遠程連接伺服器進行查看(此時Linux的優勢開始凸顯!!!),是不是感覺還挺簡(chao)單(nan)的,現在我們有了數據,但是原始的數據對於我們來說,還是不夠,我們還需要進行進一步的數據處理,所以在此做個下期預告,下一次我們將來利用伺服器把每天的數據定時自動進行處理計算,並返回結果儲存到資料庫中,有興趣的同學可以期待一下喔!!!


※今年花市爆紅的「網紅款」,小混獨家盤點2018年英德花市有哪些值得買的花!
※英語啟蒙+數學啟蒙,一部動畫片搞定
TAG:全球大搜羅 |