我一直以來都有一個想法是「
如何把一整個系統給建立起來」,這個想法一直存在我的心裡,加上工作上一直會接觸到這些東西,促使我一步一步要去了解它,不過這涉及到的知識和技術非常多,打算開始將它拆解成小部分來學習。
近期參加公司內部所舉辦的黑客松比賽,其中我們所建立的系統就是由 MongoDB 做為後端資料庫使用,所以之前就已經開始學習
使用Python將CSV數據寫入到MongoDB,這篇文章主要是紀錄了該如何透過 Python 來寫入數據到資料庫裡。
今天的內容就是希望不要透過 Python 來執行,而是中間透過一個 API Server 來做服務上的串接。
在開始之前,先了解一下 Flask 是一個什麼樣的工具。
不囉嗦,直接看一個最基本的範例程式碼:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"
if __name__ == "__main__":
app.run(debug=True)
- app = Flask(__name__) 用於初始化 Flask 物件,然後存到 app 變數裡,之後就可以透過這項變數來呼叫其他的功能。
- "@app.route("/")" 用於建立主網域底下的網址,如果你起的伺服器是地端的就會是 localhost:5000,"/" 也是代表 localhost:5000的意思。
這時候在 "/" 後面加上 "/hello" 的話,就會變成 localhost:5000/hello 的網址。
你同時也可以設定使用者對於這個 route 的 mothods,可以是 POST 或 GET 抑或是其他,設定方法如下:
@app.route("/hello", methods=['GET'])
def hello_world():
return "<p>Hello, World!</p>"
這樣設定好以後,你就可以在瀏覽器中輸入 localhost:5000/hello,畫面中就會看到 Hello world! 的字樣。
讀取 MongoDB 數據
只需要將 Flask 結合 pymongo 即可。
from flask import Flask, jsonify
from flask_cors import CORS
import pymongo
app = Flask(__name__)
CORS(app)
@app.route('/')
def wellcome():
return '<html><body><h1>Hello World</h1></body></html>'
@app.route('/test')
def test_function():
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['personal_goal']
col = db['2022']
data = col.find()
all_members = {'all_members': []}
for people in data:
all_members['all_members'].append(people['name'])
return jsonify(all_members)
如果你想要撈取整個資料庫所有數據,需要透過這項程式碼來完成:
#db.collection.find(查詢條件)
data = col.find({})
中間的{}是不設查詢條件的意思,應該會看到一筆剛剛新增的資料,其中 _id 是 MongoDB 自動產生的 ID,每一筆資料(document)都會產生一個獨一無二的 ID。
此時你的數據庫裡面需要有幾筆的數據,你才能夠過 api 正確撈到數據,即便沒有數據,也會回傳一個空值。
檢驗的方式,可以透過瀏覽器來查看,只需要在網址列輸入 localhost:5000/test 即可。