Linux中國

怎麼在一台樹莓派上安裝 Postgres 資料庫

保存你的項目或應用程序持續增加的數據,資料庫是一種很好的方式。你可以在一個會話中將數據寫入到資料庫,並且在下次你需要查找的時候找到它。一個設計良好的資料庫可以做到在巨大的數據集中高效地找到數據,只要告訴它你想去找什麼,而不用去考慮它是如何查找的。為一個基本的 CRUD (創建、記錄、更新、刪除)應用程序安裝一個資料庫是非常簡單的, 它是一個很通用的模式,並且也適用於很多項目。

為什麼 PostgreSQL 一般被為 Postgres? 它被認為是功能和性能最好的開源資料庫。如果你使用過 MySQL,它們是很相似的。但是,如果你希望使用它更高級的功能,你會發現優化 Postgres 是比較容易的。它便於安裝、容易使用、方便安全, 而且在樹莓派 3 上運行的非常好。

本教程介紹了怎麼在一個樹莓派上去安裝 Postgres;創建一個表;寫簡單查詢;在樹莓派、PC,或者 Mac 上使用 pgAdmin 圖形用戶界面;從 Python 中與資料庫交互。

你掌握了這些基礎知識後,你可以讓你的應用程序使用複合查詢連接多個表,那個時候你需要考慮的是,怎麼去使用主鍵或外鍵優化及最佳實踐等等。

安裝

一開始,你將需要去安裝 Postgres 和一些其它的包。打開一個終端窗口並連接到網際網路,然後運行以下命令:

sudo apt install postgresql libpq-dev postgresql-client 
postgresql-client-common -y

![installing postgres](/data/attachment/album/201711/14/231229ybrcyjabbrchszyr.png "installing postgres")

當安裝完成後,切換到 Postgres 用戶去配置資料庫:

sudo su postgres

現在,你可以創建一個資料庫用戶。如果你創建了一個與你的 Unix 用戶帳戶相同名字的用戶,那個用戶將被自動授權訪問該資料庫。因此在本教程中,為簡單起見,我們將假設你使用了默認用戶 pi 。運行 createuser 命令以繼續:

createuser pi -P --interactive

當得到提示時,輸入一個密碼 (並記住它), 選擇 n 使它成為一個非超級用戶(LCTT 譯註:此處原文有誤),接下來兩個問題選擇 y(LCTT 譯註:分別允許創建資料庫和其它用戶)。

![creating a postgres user](/data/attachment/album/201711/14/231229kj9hqr0qdsh0dqzd.png "creating a postgres user")

現在,使用 Postgres shell 連接到 Postgres 去創建一個測試資料庫:

$ psql
> create database test;

按下 Ctrl+D 兩次從 psql shell 和 postgres 用戶中退出,再次以 pi 用戶登入。你創建了一個名為 pi 的 Postgres 用戶後,你可以從這裡無需登錄憑據即可訪問 Postgres shell:

$ psql test

你現在已經連接到 "test" 資料庫。這個資料庫當前是空的,不包含任何錶。你可以在 psql shell 里創建一個簡單的表:

test=> create table people (name text, company text);

現在你可插入數據到表中:

test=> insert into people values ('Ben Nuttall', 'Raspberry Pi Foundation');

test=> insert into people values ('Rikki Endsley', 'Red Hat');

然後嘗試進行查詢:

test=> select * from people;

     name      |         company         
---------------+---------------------- Ben Nuttall   | Raspberry Pi Foundation
 Rikki Endsley | Red Hat
(2 rows)

![a postgres query](/data/attachment/album/201711/14/231230uyhiztyhmc9tw9cc.png "a postgres query")

test=> select name from people where company = 'Red Hat';

     name      | company 
---------------+------ Rikki Endsley | Red Hat
(1 row)

pgAdmin

如果希望使用一個圖形工具去訪問資料庫,你可以使用它。 PgAdmin 是一個全功能的 PostgreSQL GUI,它允許你去創建和管理資料庫和用戶、創建和修改表、執行查詢,和如同在電子表格一樣熟悉的視圖中瀏覽結果。psql 命令行工具可以很好地進行簡單查詢,並且你會發現很多高級用戶一直在使用它,因為它的執行速度很快 (並且因為他們不需要藉助 GUI),但是,一般用戶學習和操作資料庫,使用 pgAdmin 是一個更適合的方式。

關於 pgAdmin 可以做的其它事情:你可以用它在樹莓派上直接連接資料庫,或者用它在其它的電腦上遠程連接到樹莓派上的資料庫。

如果你想去訪問樹莓派,你可以用 apt 去安裝它:

sudo apt install pgadmin3

它是和基於 Debian 的系統如 Ubuntu 是完全相同的;如果你在其它發行版上安裝,嘗試與你的系統相關的等價的命令。 或者,如果你在 Windows 或 macOS 上,嘗試從 pgAdmin.org 上下載 pgAdmin。注意,在 apt 上的可用版本是 pgAdmin3,而最新的版本 pgAdmin4,在其網站上可以找到。

在同一台樹莓派上使用 pgAdmin 連接到你的資料庫,從主菜單上簡單地打開 pgAdmin3 ,點擊 new connection 圖標,然後完成註冊,這時,你將需要一個名字(連接名,比如 test),改變用戶為 「pi」,然後剩下的輸入框留空 (或者如它們原本不動)。點擊 OK,然後你在左側的側面版中將發現一個新的連接。

![connect your database with pgadmin](/data/attachment/album/201711/14/231231ryspj0jzf25s2wh2.png "connect your database with pgadmin")

要從另外一台電腦上使用 pgAdmin 連接到你的樹莓派資料庫上,你首先需要編輯 PostgreSQL 配置允許遠程連接:

1、 編輯 PostgreSQL 配置文件 /etc/postgresql/9.6/main/postgresql.conf ,取消 listen_addresses 行的注釋,並把它的值從 localhost 改變成 *。然後保存並退出。

2、 編輯 pg_hba 配置文件 /etc/postgresql/9.6/main/postgresql.conf,將 127.0.0.1/32 改變成 0.0.0.0/0 (對於IPv4)和將 ::1/128 改變成 ::/0 (對於 IPv6)。然後保存並退出。

3、 重啟 PostgreSQL 服務: sudo service postgresql restart

注意,如果你使用一個舊的 Raspbian 鏡像或其它發行版,版本號可能不一樣。

![ edit the postgresql configuration to allow remote connections](/data/attachment/album/201711/14/231231cpl8zu71q33eosxv.png " edit the postgresql configuration to allow remote connections")

做完這些之後,在其它的電腦上打開 pgAdmin 並創建一個新的連接。這時,需要提供一個連接名,輸入樹莓派的 IP 地址作為主機(這可以在任務欄的 WiFi 圖標上懸停滑鼠找到,或者在一個終端中輸入 hostname -I 找到)。

![a remote connection](/data/attachment/album/201711/14/231232wl25zlm3dahm3n2h.png "a remote connection")

不論你連接的是本地的還是遠程的資料庫,點擊打開 Server Groups > Servers > test > Schemas > public > Tables,右鍵單擊 people 表,然後選擇 View Data > View top 100 Rows。你現在將看到你前面輸入的數據。

![viewing test data](/data/attachment/album/201711/14/231233itfcdqqc7qvdv7qi.png "viewing test data")

你現在可以創建和修改資料庫和表、管理用戶,和使用 GUI 去寫你自己的查詢了。你可能會發現這種可視化方法比命令行更易於管理。

Python

要從一個 Python 腳本連接到你的資料庫,你將需要 Psycopg2 這個 Python 包。你可以用 pip 來安裝它:

sudo pip3 install psycopg2

現在打開一個 Python 編輯器寫一些代碼連接到你的資料庫:

import psycopg2

conn = psycopg2.connect('dbname=test')
cur = conn.cursor()

cur.execute('select * from people')

results = cur.fetchall()

for result in results:
    print(result)

運行這個代碼去看查詢結果。注意,如果你連接的是遠程資料庫,在連接字元串中你將需要提供更多的憑據,比如,增加主機 IP、用戶名,和資料庫密碼:

conn = psycopg2.connect('host=192.168.86.31 user=pi 
password=raspberry dbname=test')

你甚至可以創建一個函數去運行特定的查詢:

def get_all_people():
    query = """
    SELECT
        *
    FROM
        people
    """
    cur.execute(query)
    return cur.fetchall()

和一個包含參數的查詢:

def get_people_by_company(company):
    query = """
    SELECT
        *
    FROM
        people
    WHERE
        company = %s
    """
    values = (company, )
    cur.execute(query, values)
    return cur.fetchall()

或者甚至是一個增加記錄的函數:

def add_person(name, company):
    query = """
    INSERT INTO
        people
    VALUES
        (%s, %s)
    """
    values = (name, company)
    cur.execute(query, values)

注意,這裡使用了一個注入字元串到查詢中的安全的方法, 你不希望被 小鮑勃的桌子 害死!

![Python](/data/attachment/album/201711/14/231234azhhh88heic8ezc4.png "Python")

現在你知道了這些基礎知識,如果你想去進一步掌握 Postgres ,查看在 Full Stack Python 上的文章。

(題圖:樹莓派基金會)

作者簡介:

Ben Nuttall - 樹莓派社區的管理者。除了它為樹莓派基金會所做的工作之外 ,他也投入開源軟體、數學、皮艇運動、GitHub、探險活動和 Futurama。在 Twitter @ben_nuttall 上關注他。

via: https://opensource.com/article/17/10/set-postgres-database-your-raspberry-pi

作者:Ben Nuttall 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。