003.資料庫有了,我想要用網頁看。

閱讀時間約 10 分鐘
  • 文內如有投資理財相關經驗、知識、資訊等內容,皆為創作者個人分享行為。
  • 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。
  • 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。
  • 方格子希望您能從這些分享內容汲取投資養份,養成獨立思考的能力、判斷、行動,成就最適合您的投資理財模式。

Q:好,這個002步驟完成了,接下來我想要有個簡單的網頁可以去找到這資料庫裡的靜態資料。

A:

項目新結構

我們將基於一個簡單的前後端分離架構來實現網頁訪問。

project/

├── backend/ # 後端服務,提供 API
│ ├── app.py # Flask 主程式,處理數據庫連接與 API
│ ├── requirements.txt # 後端依賴

├── frontend/ # 前端頁面,顯示靜態資料
│ ├── index.html # 主頁面
│ ├── app.js # 與 API 通信的 JavaScript
│ ├── styles.css # 簡單樣式

├── sql/ # 資料庫相關 SQL 文件
│ ├── create_twse_table.sql # 建表語句

├── README.md # 更新後的說明文件
└── .gitignore # 忽略文件


步驟 1:建立後端 API

1. 使用 Flask 開發 API

我們將 Flask 作為後端框架,提供一個簡單的 /api/companies API,返回資料庫中的靜態資料。

backend/app.py

python
複製程式碼from flask import Flask, jsonify
from sqlalchemy import create_engine
import pandas as pd

app = Flask(__name__)

# 資料庫連接設定
DB_CONNECTION_STRING = "postgresql://<username>:<password>@<host>:<port>/<database>"
engine = create_engine(DB_CONNECTION_STRING)

@app.route('/api/companies', methods=['GET'])
def get_companies():
"""
從資料庫中讀取公司靜態資料並返回 JSON
"""
try:
# 使用 SQLAlchemy 讀取資料
query = "SELECT stock_id, company_name, industry, address, website FROM twse_listed_companies"
df = pd.read_sql(query, engine)

# 將資料轉為 JSON 格式返回
return jsonify(df.to_dict(orient='records'))
except Exception as e:
return jsonify({"error": str(e)}), 500

if __name__ == "__main__":
app.run(debug=True)

2. 安裝後端依賴

backend/requirements.txt 中列出 Flask 和 SQLAlchemy 的依賴:

php
複製程式碼flask
sqlalchemy
pandas
psycopg2-binary

安裝依賴:

bash
複製程式碼cd backend
pip install -r requirements.txt

3. 啟動後端服務

運行 Flask:

bash
複製程式碼python app.py

後端將在 http://127.0.0.1:5000/api/companies 提供 API。


步驟 2:建立前端靜態頁面

前端部分使用 HTML、CSS 和 JavaScript,通過 AJAX 請求 Flask API 並展示資料。

1. 建立主頁面

frontend/index.html

html
複製程式碼<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TWSE Listed Companies</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>TWSE Listed Companies</h1>
<table id="companies-table">
<thead>
<tr>
<th>Stock ID</th>
<th>Company Name</th>
<th>Industry</th>
<th>Address</th>
<th>Website</th>
</tr>
</thead>
<tbody>
<!-- Data will be inserted here -->
</tbody>
</table>
<script src="app.js"></script>
</body>
</html>

2. 編寫 JavaScript

frontend/app.js

javascript
複製程式碼// Fetch companies data from API
fetch('http://127.0.0.1:5000/api/companies')
.then(response => response.json())
.then(data => {
const tableBody = document.querySelector('#companies-table tbody');
tableBody.innerHTML = ''; // 清空現有的資料

// 插入每筆資料
data.forEach(company => {
const row = document.createElement('tr');
row.innerHTML = `
<td>${company.stock_id}</td>
<td>${company.company_name}</td>
<td>${company.industry}</td>
<td>${company.address}</td>
<td><a href="${company.website}" target="_blank">${company.website}</a></td>
`;
tableBody.appendChild(row);
});
})
.catch(error => console.error('Error fetching data:', error));

3. 添加樣式

frontend/styles.css

css
複製程式碼body {
font-family: Arial, sans-serif;
margin: 20px;
}

h1 {
text-align: center;
}

table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}

table, th, td {
border: 1px solid #ddd;
}

th, td {
padding: 10px;
text-align: left;
}

th {
background-color: #f4f4f4;
}

步驟 3:更新 README 文件

將安裝和啟動步驟加入 README 文件。


avatar-img
3會員
28內容數
人生online之資本市場大作戰
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
微嗑多的沙龍 的其他內容
第一步:建立核心資料庫和數據收集流程
Q:我有一套財報分析方法,每一季都會找出相對應的股票,然後產生出這一記值得投資的股票。好處是執行速度很快,可以得到一份Excel,壞處是我想要長期追蹤就變得不容易(因為要跨Excel做連動分析)。 目前我的想法是可以整理成資料庫,並變成自動化流程,方便我隨時可以深入研究好的股票。
前言:本來是發佈在社交軟體,但今年有個方格子碼字的目標,所以就放在這邊囉。 2024年開始導入「每季結算成就」,當作是自己對人生的KPI紀錄,也是每週活動的進階版,只是把活動收斂到某些特定項目,也讓自己的生活更加「按表操課」,以便完成人生成就清單。
我常會想,為啥投資文章和書籍這麼多?還有,為什麼我也會想寫投資相關的文章? 因為需求就在這邊。 大家都有生存焦慮,主計處公布2024年前七個月的薪資中位數是37,111元,經常性薪資平均數是46,269元,當數字出現,現實就跟著出現了,不由自主會去比較自己是否達標,但就算達標了,翻開591會遇到
在台積電突破千元,指數頻創新高的時候,講投資真的是韭味十足。 如果太過樂觀,反轉在一夕之間,可能一個月虧損30-40%;如果不夠樂觀,又會被說:「好了拉,酸葡萄心態喔~」想了想還是用風險控管的角度來說好了。
先破題,投資的心理學不是要對外看別人,而是向內看自己。 畢竟沒有太多活動,是你一下子就要投進真金白銀,然後下一秒就有可能開始損失。
第一步:建立核心資料庫和數據收集流程
Q:我有一套財報分析方法,每一季都會找出相對應的股票,然後產生出這一記值得投資的股票。好處是執行速度很快,可以得到一份Excel,壞處是我想要長期追蹤就變得不容易(因為要跨Excel做連動分析)。 目前我的想法是可以整理成資料庫,並變成自動化流程,方便我隨時可以深入研究好的股票。
前言:本來是發佈在社交軟體,但今年有個方格子碼字的目標,所以就放在這邊囉。 2024年開始導入「每季結算成就」,當作是自己對人生的KPI紀錄,也是每週活動的進階版,只是把活動收斂到某些特定項目,也讓自己的生活更加「按表操課」,以便完成人生成就清單。
我常會想,為啥投資文章和書籍這麼多?還有,為什麼我也會想寫投資相關的文章? 因為需求就在這邊。 大家都有生存焦慮,主計處公布2024年前七個月的薪資中位數是37,111元,經常性薪資平均數是46,269元,當數字出現,現實就跟著出現了,不由自主會去比較自己是否達標,但就算達標了,翻開591會遇到
在台積電突破千元,指數頻創新高的時候,講投資真的是韭味十足。 如果太過樂觀,反轉在一夕之間,可能一個月虧損30-40%;如果不夠樂觀,又會被說:「好了拉,酸葡萄心態喔~」想了想還是用風險控管的角度來說好了。
先破題,投資的心理學不是要對外看別人,而是向內看自己。 畢竟沒有太多活動,是你一下子就要投進真金白銀,然後下一秒就有可能開始損失。
你可能也想看
Google News 追蹤
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
接續上一篇 Step2:VC#專案建立 Step3:IIS新建站台 Step4:VC#架設到IIS中
Thumbnail
這是為了搭建自己想要的工作流而開始的研究工作。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
本課程學習如何添加 Room 資料庫相關依賴庫配置。
Thumbnail
Hi 我是 VK~ 在 8 月底寫完〈探索 AI 時代的知識革命:NotebookLM 如何顛覆學習和創作流程?〉後,有機會在 INSIDE POSSIBE 分享兩次「和 NotebookLM 協作如何改變我學習和創作」的主題,剛好最近也有在許多地方聊到關於 NotebookLM 等 AI 工具
Thumbnail
國泰CUBE App 整合外幣換匯、基金、證券等服務,提供簡便、低成本的美股定期定額投資解決方案。 5分鐘開戶、低投資門檻,幫助新手輕鬆進軍國際股市;提供人氣排行榜,讓投資人能夠掌握市場趨勢。
Thumbnail
這是張老師的第三本書,我想前二本應該也有很多朋友們都有讀過,我想絕對是受益良多,而這次在書名上就直接點出,著重在從投資的角度來切入
先學習 HTML, CSS, JavaScript 基礎觀念, 再透過實作專案,慢慢熟悉不同的語法使用方式。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
前面已經安裝好IIS後,並且也新建站台了,那麼接下來這篇就會分享如何使用它
Thumbnail
接續上一篇 Step2:VC#專案建立 Step3:IIS新建站台 Step4:VC#架設到IIS中
Thumbnail
這是為了搭建自己想要的工作流而開始的研究工作。
Thumbnail
※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
本課程學習如何添加 Room 資料庫相關依賴庫配置。