iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0
Software Development

LINE Messaging API SDK for Python 實現群組團購輔助機器人系列 第 13

DAY 13 資料庫-建立並操作Heroku PostgreSQL

Heroku PostgreSQL是一種Heroku提供的PostgreSQL服務,可免費使用,免費版使用有一定的限制,如果需要付費方案可見Heroku Postgres
PostgreSQL是一種開源的物件-關聯式資料庫資料庫管理系統,用來儲存與管理資料

建立資料庫

https://elements.heroku.com/addons/heroku-postgresql
進入網頁點擊右上Install Heroku Postgres
https://ithelp.ithome.com.tw/upload/images/20210925/20140165yi1TWCXOft.jpg
選擇資費方案,這邊我選擇預設的Hobby Dev方案
App to provision to搜尋並選擇你的app
https://ithelp.ithome.com.tw/upload/images/20210925/20140165PQQnRQlaLV.png
將Heroku Postgres提供給你的app
Submit Order Form將表單送出
https://ithelp.ithome.com.tw/upload/images/20210925/20140165O8mtE3Ywqn.png
在resources頁面會看到你的Heroku PostgreSQL
https://ithelp.ithome.com.tw/upload/images/20210925/20140165H5xNV3gSP5.png

連線至Heroku PostgreSQL

psycopg2是python語言的PostgreSQL資料庫接口,它的主要優勢在於完全支持Python DB API 2.0,以及安全的多執行緒支持

安裝psycopg

如前面沒有安裝到psycopg,輸入安裝psycopg

pip uninstall psycopg2

連線到資料庫

import psycopg2到你的專案

import psycopg2

在heroku你的app儀表網頁下的resources頁面,點擊進入Heroku PostgreSQL
https://ithelp.ithome.com.tw/upload/images/20210925/201401651CkWrftRYA.png
點擊settings-->Database Credentials顯示你的資料庫驗證資訊
https://ithelp.ithome.com.tw/upload/images/20210925/20140165iGs4iUHf14.png
將Database Credentials中的資料填至psycopg2.connect函數中並執行

conn = psycopg2.connect(database="資料庫名稱",
						user="使用者帳號",
						password="密碼",
						host="主機位址",
						port="5432")
print("Opened database successfully")

https://ithelp.ithome.com.tw/upload/images/20210925/20140165jZwzX5mzLR.png

建立資料表

這邊建立一個範例資料表

id(主鍵) 姓名 使用者id
cursor = conn.cursor()
cursor.execute("CREATE TABLE userdata (id serial PRIMARY KEY, name VARCHAR(50), userid VARCHAR(50));")
print("Create table successfully")
cursor.close()

https://ithelp.ithome.com.tw/upload/images/20210925/201401658tJUAcVi0Z.png

插入資料至資料表

cursor = conn.cursor()
cursor.execute("INSERT INTO userdata (name, userid) VALUES (%s, %s);", ("小明", "a123456"))
cursor.execute("INSERT INTO userdata (name, userid) VALUES (%s, %s);", ("小王", "b654321"))
cursor.execute("INSERT INTO userdata (name, userid) VALUES (%s, %s);", ("小華", "c987654"))
print("Inserted 3 rows of data")
conn.commit()
cursor.close()

https://ithelp.ithome.com.tw/upload/images/20210925/20140165AFaQL4awfM.png

讀取資料表資料

cursor.execute("SELECT * FROM userdata;")#選擇資料表userdata
rows = cursor.fetchall() #讀出所有資料

for row in rows:   #將讀到的資料全部print出來
    print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))

https://ithelp.ithome.com.tw/upload/images/20210925/20140165nxvire53bM.png

更新資料

cursor = conn.cursor()
cursor.execute("UPDATE inventory SET userid = %s WHERE name = %s;", ("d123789", "小明"))
conn.commit()
print("Updated 1 row of data")
cursor.close()

https://ithelp.ithome.com.tw/upload/images/20210925/20140165OUWrXTtZ7C.png

刪除資料

cursor = conn.cursor()
cursor.execute("DELETE FROM userdata WHERE name = %s;", ("小華",))
print("Deleted 1 row of data")
conn.commit()
cursor.close()

https://ithelp.ithome.com.tw/upload/images/20210925/201401651ox1DNEDnB.png
參考:
https://www.itsfun.com.tw/psycopg2/wiki-4311324-5543304


上一篇
DAY 12 群組相關事件及命令
下一篇
DAY 14 資料庫-透過pgAdmin4管理Heroku PostgreSQL
系列文
LINE Messaging API SDK for Python 實現群組團購輔助機器人30

尚未有邦友留言

立即登入留言