使用Render的PostgreSQL部屬雲端資料庫伺服器, 可以方便在各平台存取資料 Render的PostgreSQL免費方案只能設一個資料伺服器,資料只能保存 3 個月 ## 在Render創建PostgreSQL 登入Render後, 在左上角點選+New --> PostgreSQL ![image](https://hackmd.io/_uploads/ryIBix83C.png =20%x) 接下來設定PostgreSQL, 填完按下"Create Database", 這樣就完成創建了 ![image](https://hackmd.io/_uploads/B107cg82A.png) ![image](https://hackmd.io/_uploads/BJ43j5rh0.png) 創建完成後, 進入PostgreSQL的info頁面, 可以使用這些資訊用來連接PostgreSQL資料庫 可以使用psql命令行工具、pgAdmin(GUI)或是 Python(psycopg2)來連接 ![image](https://hackmd.io/_uploads/r1d1goS20.png) <br/> ## 使用pgAdmin連接PostgreSQL pgAdmin是PostgreSQL的GUI圖形化介面工具 這裡下載pgAdmin https://www.pgadmin.org/download/ 打開pgAdmin, 點選Object -> Server, 連接到PostgreSQL的設定 ![image](https://hackmd.io/_uploads/Bkkr1oHhC.png =80%x) 第一個分頁"General", 填寫伺服器名稱 ![image](https://hackmd.io/_uploads/BJ9OY6B30.png) 第二個分頁"Connection" pgAdmin依PostgreSQL info對應的欄位填寫即可 **特別注意!!!** Internal Database URL結構:postgres://[username]:[password]@**[hostname].[伺服器位置].render.com**/[database] pgAdmin的Host name/address只要貼"**[hostname].[伺服器位置].render.com**", 也就是複製@後面到render.com 填好了按下"Save"季就完成了 ![image](https://hackmd.io/_uploads/HyZAFTr20.png) 看到小象就是成功囉 ![image](https://hackmd.io/_uploads/B1df_xI2C.png) 可以先創建一個表單來試試 *注意PostgreSQL和MySQL語法有一些差異, 像是MySOL在建立id自動增加用AUTO_INCREASEMENT, PostgreSQL則是用SERIAL * 建立表單步驟: 1. 打開指令頁面:點選Database再點選上面圖示(Query tool), 也可以在Database點選右鍵再點選Query tool 2. 輸入創建表單的指令後, 再點選小箭頭(1)執行單一命令, 如果全部執行按左邊的箭頭 ![image](https://hackmd.io/_uploads/HJY8VhH3R.png) ![image](https://hackmd.io/_uploads/By9dGnr3R.png) 然後在Database點右鍵, 點選Refresh, 刷新頁面 ![image](https://hackmd.io/_uploads/H14UZ2S20.png =50%x) 展開 Database -> 點擊要檢視的 database -> Schemas -> public -> Tables, 就可以看到建立的表單了 ![image](https://hackmd.io/_uploads/HJ9n83S30.png =50%x) <br/> ## 使用Python連接PostgreSQL 首先, 在終端機安裝psycopg2 ``` $ pip install psycopg2 ``` 前面使用pgAdmin已經新增了資料表, 在這裡使用python新增資料進去 1. 連接到PostgreSQL 2. 新增一筆資料, 並顯示最後一筆資料 ```py= import psycopg2 # 連接到 PostgreSQL 資料庫 conn = psycopg2.connect( host="<Your hostname/address>", # hostname/address database="<Your database>", # 資料庫名稱 user="<Your user name>", # 資料庫使用者名稱 password="<password>" # 資料庫密碼 ) # 建立游標物件 cur = conn.cursor() # 將資料插入到資料表 cur.execute("INSERT INTO mydata (name, phone) VALUES ('Albert', '0921333444');") cur.execute("SELECT * FROM mydata ORDER BY id DESC LIMIT 1;") # 獲取所有結果 result = cur.fetchall() # 顯示結果 for row in result: print(row) # 提交變更 conn.commit() # 關閉游標和連接 cur.close() conn.close() print("資料已成功新增。") ``` 執行結果: ![image](https://hackmd.io/_uploads/ry6oV-UnC.png) <br/> ## 參考資料 https://jimmyswebnote.com/postgresql-tutorial/ https://medium.com/@King610160/render%E9%83%A8%E7%BD%B2-postgresql%E8%A8%AD%E7%BD%AE-e39ad7c3c862