【D4】汇入交易资料

前言

这是需要调整资料库连线资讯,修改成符合MySQL的格式。
本次也会参考《【Day10】Azure资料库#2:建立SQL server资料表》以及《【Day16】每日资料汇入资料库》这两篇文章。

至於Python的使用,可以参考前面系列,这边就不再多说如何用pipenv和安装套件。

程序码在:d4_saveStockTransToDb.py


新增股票代码

《【Day10】Azure资料库#2:建立SQL server资料表》,是先手动输入台积电资料进入资料库,这边我们也先跟着做。毕竟先把Azure的依赖改成MySQL,之後再介绍取得上市公司的基本资料。所以就手动输入台积电资料罗~

所以结果如下:

https://ithelp.ithome.com.tw/upload/images/20210905/20103826lcylnmb3fr.png

新增交易资讯

使用《【Day16】每日资料汇入资料库》的方法,汇入资料,其中需要把连结改掉。

所以要删除save_data_to_azure_db(stock_data)这个function,改建立save_data_to_mysql_db()

def save_data_to_mysql_db():
    db_settings = {
        "host": "127.0.0.1",
        "port": 3306,
        "user": "root",
        "password": "pwd",
        "db": "finance",
    }
    # 计数器:计算新增了几笔
    counter = 0

    try:
        # 建立connection物件
        conn = pymysql.connect(**db_settings)
        # 建立cursor物件
        with conn.cursor() as cursor:
            now = datetime.datetime.now().strftime("%Y-%m-%d")

            # 新增SQL语法
            for _, row in df.iterrows():
                try:
                    cmd = """INSERT INTO DailyPrice 
                    (StockID, Symbol, TradeDate, OpenPrice, HighPrice, LowPrice,
                    ClosePrice,Volumn)
                    values(%s,%s,%s,%s,%s,%s,%s,%s);"""
                    cursor.execute(
                        cmd,
                        (
                            None,
                            row.stock_symbol,
                            now,
                            row.open if pandas.notnull(row.open) else 0,
                            row.high if pandas.notnull(row.high) == float("nan") else 0,
                            row.low if pandas.notnull(row.low) == float("nan") else 0,
                            row.close if pandas.notnull(row.close) == float("nan") else 0,
                            row.volume if pandas.notnull(row.volume) == float("nan") else 0,
                        ),
                    )
                    conn.commit()
                    counter += 1
                except Exception as e:
                    print(e)
    except Exception as exc:
        print(exc)
        return False

    return True

其中row.open if pandas.notnull(row.open) else 0是用来判断该资料是否为None,如果为空值,就给0


後记

接下来开始我们真正的新内容罗


<<:  [Day04] JavaScript - ES6 模板字符串 (Template Literal)

>>:  组织可以在稽核的时侯,向供应商索取 ISMS 相关文件吗?

Day 13 Kubernetes 可视化工具-Kubeview

Kubeview 是 Kubernetes 的资源可视化工具,主要功能为通过直观的 UI 和各资源相...

JavaScript学习日记 : Day2 - 动态型别+弱型别

1. 静态型别 VS. 动态型别 1.1 静态型别的例子 以Java为例: int x 在宣告x变数...

Swift纯Code之旅 Day28. 「新增闹钟功能(1) - Struct使用、取得UIDatePicker值」

前言 如果只有画面像的话,那也太弱了吧! 赶紧来实作新增闹钟的功能,做完拿去炫耀给边身边的人看! 实...

中国银行长城跨境通VISA/万事达国际借记卡申请

中国银行长城跨境通卡,产品全称中国银行长城跨境通国际借记卡,可能是目前唯一能够自由办理的国际借记卡。...

[常见的自然语言处理技术] Bag-of-Words Model:简单直观的统计语言模型

前言 当我们要使用机器学习演算法来解决自然语言的问题,我们首先必须将文字进行量化( quantifi...