# 1. 使用python連線postgresql
## 下載教學檔案
```
cd mimic/
git clone https://github.com/holiday01/mimic-iii-ntuh-tutorial.git
```
## 套件安裝
```
pip install psycopg2-binary
pip install pandas
```
## 載入套件
```
import psycopg2
import pandas as pd
```
## 設定連接資料庫參數
```
conn = psycopg2.connect(database="database_name", user="user_name",
password="user_password", host="IP",
port="IP_port")
```
## 參數介紹
* database 資料庫名稱
* user 帳號
* password 密碼
* host 伺服器IP
* port 連接資料庫的埠
## 連接上資料庫,抓取資料
```
## 允許python執行postgresql語法
with conn.cursor() as cur:
## 觀察查詢筆數
print(cur.rowcount)
## SQL語法
sql = "select * from mimiciii.icustays"
## 執行sql語法
cur.execute(sql)
## 取得欄位名稱
name = [desc[0] for desc in cur.description]
## fetchall是將所有收尋的資料都寫入 rows 中
# rows = pd.DataFrame(cur.fetchall())
rows = pd.DataFrame(cur.fetchall(),columns=name)
## 取出一筆資料
# rows = pd.DataFrame(cur.fetchone())
## 自行設定要幾筆資料
# rows = pd.DataFrame(cur.fetchmany(10))
## 觀察查詢筆數
print(cur.rowcount)
print(rows.shape)
rows.head()
```
## 合併與整理兩個資料表,拿取資料,以敗血病為例
```
conn = psycopg2.connect(database="database_name", user="user_name",
password="user_password", host="IP",
port="IP_port")
with conn.cursor() as cur:
## 觀察查詢筆數
## SQL語法
sql = """
select ma.*
from mimiciii.admissions ma
INNER JOIN public.angus pa
ON ma.hadm_id = pa.hadm_id
where pa.explicit_sepsis = 1
"""
## 執行sql語法
cur.execute(sql)
## 取得欄位名稱
name = [desc[0] for desc in cur.description]
## 取得資料
rows = pd.DataFrame(cur.fetchall(),columns=name)
print(rows.shape)
rows.head()
```