2021年3月8日 星期一

CentOS Python 3.7 安裝方式

有些開發的程式在python 3.8的檔案套件不相容,例如pymssql,等。 所以如果不建置虛擬環境的話才特意安裝3.7版本的python 安裝流程如下
# 先進行yum套件的update
yum update -y

# 安裝相依性套件
yum install gcc openssl-devel bzip2-devel libffi-devel zlib-devel

# 下載python 3.7.9 source code
cd /usr/src
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz

# 解壓縮,並開始安裝
tar xzf Python-3.7.9.tgz
cd Python-3.7.9
./configure --enable-optimizations
make altinstall

# 刪除下載的檔案
rm -rf /usr/src/Python-3.7.9.tgz

# 確認是否安裝成功
python3.7 -V

2021年3月4日 星期四

Vertica Division by Zero Error

最近剛接觸Vertica DB,有一些SQL語法跟MySQL、MSSQL又不太一樣,最近遇到一個問題是。 當分母為0時會出現Division by zero的錯誤,查了一下文件解法如下。

# 這樣會出現錯誤
SELECT 1 / 0;

# 解法
SELECT 1 / NULLIFZERO(0);

# 另一種解法
SELECT 1 / NULLIF(0, 0);

2021年3月2日 星期二

股票抽籤申購爬蟲

經過多次熱門上市或上櫃的股票公開抽籤過期才發現沒填單,就想要一個自動爬蟲通知的系統。 爬蟲簡易程式碼如下,這個爬蟲可以搭配自動發送Email或是line api或是telgram api

import requests
import time
import pandas as pd
from io import StringIO
from datetime import datetime

now = datetime.now()
now = now.strftime("%Y/%m/%d")
# 把要取資料的年份帶入
url = "https://www.twse.com.tw/announcement/publicForm?response=csv&yy={0}".format(now[0:4])
# 用request 套件抓取網頁
res = requests.get(url)
res.encoding='big5'
# 用pandas讀取csv檔案
df = pd.read_csv(StringIO(res.text), header=1)

select_df = pd.DataFrame(df)
select_df = select_df[:len(select_df)-5]

print(select_df)

msg = ""

for index,row in select_df.iterrows():
    try:
        ldate = row['抽籤日期']
        name = row['證券名稱']
        market = row['發行市場']
        begindate = row['申購開始日']
        enddate = row['申購結束日']
        dollor = row['承銷價(元)']

        ldate = ldate.replace(ldate[0:3],str(int(enddate[0:3]) + 1911 ))

        begindate = begindate.replace(begindate[0:3],str(int(begindate[0:3]) + 1911 ))
        enddate = enddate.replace(enddate[0:3],str(int(enddate[0:3]) + 1911 )) 
			
       # 組成要發送訊息的格式,如果申購時間還沒過期就可以準備要發送
        if(now < enddate):
            msg += """{0} {1} {2} {3} {4} {5}\n""".format(ldate, begindate, enddate, name, market, dollor)
        else:
            msg += ""
    except:
        print("error")

print(msg)

CentOS Python 3.7 安裝方式

有些開發的程式在python 3.8的檔案套件不相容,例如pymssql,等。 所以如果不建置虛擬環境的話才特意安裝3.7版本的python 安裝流程如下 # 先進行yum套件的update yum update -y # 安裝相依性套件 yum install gcc o...