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
微嗑多的沙龍
2會員
28內容數
人生online之資本市場大作戰
微嗑多的沙龍的其他內容
2024/12/02
這時候修改的程式部分變多了,而且也會遇到Bug,所以重點不僅是要學會把程式路徑打通,還要知道怎麼描述錯誤,了解邏輯錯誤或語法錯誤在哪裡。 簡單來說,就算要複製貼上也要貼對位置。 另外,GPT的確會考慮多一些問題,看到程式的當下會覺得:「哦對,這個要注意。」然後就又佩服GPT可以做到這個程度。
2024/12/02
這時候修改的程式部分變多了,而且也會遇到Bug,所以重點不僅是要學會把程式路徑打通,還要知道怎麼描述錯誤,了解邏輯錯誤或語法錯誤在哪裡。 簡單來說,就算要複製貼上也要貼對位置。 另外,GPT的確會考慮多一些問題,看到程式的當下會覺得:「哦對,這個要注意。」然後就又佩服GPT可以做到這個程度。
2024/12/02
Q: 承接之前的程式,做一個搜尋對話框
Thumbnail
2024/12/02
Q: 承接之前的程式,做一個搜尋對話框
Thumbnail
2024/11/28
目前為止的程式架構。 我就是幫忙看架構上有沒有錯的慣老闆。
2024/11/28
目前為止的程式架構。 我就是幫忙看架構上有沒有錯的慣老闆。
看更多
你可能也想看
Thumbnail
本文原先刊於我的痞克邦部落格,連結如下: 如何在家免費獲取看六萬五千本電子書的方式(10分鐘完成)-Wana的知識糖|痞客邦 https://wana1128.pixnet.net/blog/post/49557349
Thumbnail
本文原先刊於我的痞克邦部落格,連結如下: 如何在家免費獲取看六萬五千本電子書的方式(10分鐘完成)-Wana的知識糖|痞客邦 https://wana1128.pixnet.net/blog/post/49557349
Thumbnail
步驟1,追蹤敝人頭像。 步驟2,點選出版專題,並點進君子不器。 步驟3,點選,今朝好,一杯壽酒,一卷養生書。 步驟4,再次點選,今朝好,一杯壽酒,一卷養生書。接著,按下一步。
Thumbnail
步驟1,追蹤敝人頭像。 步驟2,點選出版專題,並點進君子不器。 步驟3,點選,今朝好,一杯壽酒,一卷養生書。 步驟4,再次點選,今朝好,一杯壽酒,一卷養生書。接著,按下一步。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
白話一點的意思是:「從公開的資料(API),抓下來放在自己的資料庫(PostgresDB),然後再用網頁(Web.app)的方式呈現出來」
Thumbnail
白話一點的意思是:「從公開的資料(API),抓下來放在自己的資料庫(PostgresDB),然後再用網頁(Web.app)的方式呈現出來」
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
之前有習慣在YouTbe上學習,但是看完就結束,等想到要用這方面資訊才,再去搜尋常常不一定可一找到。在書中看到 個人知識管理三大階段,記憶、連結、創造 透過數位筆記自己喜愛的資訊紀錄下來,整理分類,累積至一定的量,就可以運用這些資訊創造文章。 書中提到運用自己熟悉的數位
Thumbnail
之前有習慣在YouTbe上學習,但是看完就結束,等想到要用這方面資訊才,再去搜尋常常不一定可一找到。在書中看到 個人知識管理三大階段,記憶、連結、創造 透過數位筆記自己喜愛的資訊紀錄下來,整理分類,累積至一定的量,就可以運用這些資訊創造文章。 書中提到運用自己熟悉的數位
Thumbnail
資料集有了,模型兜好了,再來可以開始訓練了。 首先準備 train.py,下圖僅節錄部分程式碼。 圖中包含了大部分的程式和註解,整段 code 也幾乎是公版了,建議簡單看過再自己融會貫通,有問題可以根據執行時的 error log 去解決,也可以留言討論。 此時資料夾應該長這樣
Thumbnail
資料集有了,模型兜好了,再來可以開始訓練了。 首先準備 train.py,下圖僅節錄部分程式碼。 圖中包含了大部分的程式和註解,整段 code 也幾乎是公版了,建議簡單看過再自己融會貫通,有問題可以根據執行時的 error log 去解決,也可以留言討論。 此時資料夾應該長這樣
Thumbnail
Q: 承接之前的程式,做一個搜尋對話框
Thumbnail
Q: 承接之前的程式,做一個搜尋對話框
Thumbnail
第一步:建立核心資料庫和數據收集流程
Thumbnail
第一步:建立核心資料庫和數據收集流程
Thumbnail
拿到專案相關資料後, 先作好資料驗證5大好處
Thumbnail
拿到專案相關資料後, 先作好資料驗證5大好處
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News