Heroku免費帳號將在2022年12月31日失效,連帶其提供的PostgreSQL資料庫也將無法使用。Heroku服務可用Vercel取代(參考「Flask專案發布到Vercel」),但Vercel不支援資料庫,所以需使用ElephantSQL來建立PostgreSQL資料庫。
建立ElephantSQL帳號
ElephantSQL建立新帳號可由Github帳號登入建立,如果沒有Github帳號請先申請Github帳號。
開啟「https://www.elephantsql.com/」網頁,按右上角「Log in」鈕。
按「Sign in with Github」鈕建立ElephantSQL新帳號。
建立PostgreSQL資料庫
登入ElephantSQL,按「Create New Instance」鈕。
Name欄位輸入計劃名稱,Plan欄位選取「Tiny Turtle (Free)」免費計劃,然後按「Select Region」。免費計劃的限制是資料庫大小不能超過20M。
Data Center欄位選取Google Compute Engine的「asia-east2 (Hong Kong)」,按「Review」鈕。
確認資料正確後按「Create Instance」建立資料庫。
建立完成後可見到剛建立的資料庫,點選資料庫名稱會進入詳細頁面。
User & Default database欄位是資料庫擁有者及資料庫名稱,Password欄位是密碼,URL欄位的網址(此處為satao.db.elephantsql.com)是資料庫網址,這些資料在後面管理資料庫時會使用。
Current database size欄位是目前資料庫使用量,Max database size欄位是資料庫最大容量。
以pgAdmin管理PostgreSQL資料庫
如果尚未在本機安裝PostgreSQL資料庫,可開啟「https://www.postgresql.org/download」下載安裝檔進行安裝。
執行pgAdmin 4,在左方「Servers」按滑鼠右鍵,於快顯功能表點選「Create / Server」。
Name欄位輸入連線名稱,點選上方「Connection」頁籤。
Host name/address欄位輸入ElephantSQL的URL欄位的網址,Maintenance databasenhe及Username欄位輸入ElephantSQL的User & Default database欄位資料,Password欄位輸入ElephantSQL的密碼,最後按「Save」鈕建立資料庫。
pgAdmin中「elephantsql_jeng / Databases / ekzeixdq」就是ElephantSQL的PostgreSQL資料庫。
新增資料表
如果尚未在本機安裝Flask-SQLAlchemy及 psycopg2,以下面命令安裝:
pip install -U flask_sqlalchemy
pip install -U psycopg2
新增<models.py>程式檔,內容為:
1 from flask import Flask
2 from flask_sqlalchemy import SQLAlchemy
3
4 app = Flask(__name__)
5 app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://你的PostgreSQL 資料'
6 db = SQLAlchemy(app)
7
8 class students(db.Model):
9 __tablename__ = 'students'
10 sid = db.Column(db.Integer, primary_key = True)
11 name = db.Column(db.String(50), nullable = False)
12 tel = db.Column(db.String(50))
13 addr = db.Column(db.String(200))
14 email = db.Column(db.String(100))
15
16 def __init__(self, name, tel, addr, email):
17 self.name = name
18 self.tel = tel
19 self.addr = addr
20 self.email = email
21
22 @app.route('/')
23 def index():
24 db.create_all()
25 return "資料庫連線成功!"
26
27 if __name__ == '__main__':
28 app.run()
記得將第5列程式的字串修改為使用者的PostgreSQL資料,格式為:
postgresql://管理者帳號:管理者密碼@資料庫位址/資料庫名稱
例如我的字串為:
postgresql://ekzeixdq:密碼@satao.db.elephantsql.com/ekzeixdq
程式執行後,開啟瀏覽器瀏覽服務的頁面,可看到連線成功的訊息:
在pdAdmin管理頁面,展開「elephantsql_jeng / Databases / ekzeixdq / Schemas / Public / Tables」果然新增了students資料表。
沒有留言:
張貼留言