红联Linux门户
Linux协助

怎样在一台树莓派上装置Postgres数据库

发布时刻:2017-11-18 09:49:53来历:linux.cn作者:LCTT
在你的下一个树莓派项目上装置和装备盛行的开源数据库 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
怎样在一台树莓派上装置Postgres数据库
当装置完结后,切换到 Postgres 用户去装备数据库:
sudo su postgres
现在,你能够创立一个数据库用户。假如你创立了一个与你的Unix用户帐户相同姓名的用户,那个用户将被主动授权拜访该数据库。因此在本教程中,为简略起见,咱们将假定你运用了默许用户 pi 。运转 createuser 指令以持续:
createuser pi -P --interactive
当得到提示时,输入一个暗码 (并记住它), 挑选 n  使它成为一个非超级用户,接下来两个问题挑选 y(译注:别离答应创立数据库和其它用户)。
怎样在一台树莓派上装置Postgres数据库
现在,运用 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');
然后测验进行查询:
怎样在一台树莓派上装置Postgres数据库
怎样在一台树莓派上装置Postgres数据库
怎样在一台树莓派上装置Postgres数据库
 
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,然后你在左边的旁边面版中将发现一个新的衔接。
怎样在一台树莓派上装置Postgres数据库
要从别的一台电脑上运用 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 镜像或其它发行版,版别号或许不相同。
怎样在一台树莓派上装置Postgres数据库
做完这些之后,在其它的电脑上翻开 pgAdmin 并创立一个新的衔接。这时,需求供给一个衔接名,输入树莓派的 IP 地址作为主机(这能够在任务栏的 WiFi 图标上悬停鼠标找到,或许在一个终端中输入 hostname -I 找到)。
怎样在一台树莓派上装置Postgres数据库
不管你衔接的是本地的仍是长途的数据库,点击翻开Server Groups>Servers>test >Schemas>public>Tables,右键单击people表,然后挑选View Data>View top 100 Rows。你现在将看到你前面输入的数据。
怎样在一台树莓派上装置Postgres数据库
你现在能够创立和修正数据库和表、办理用户,和运用 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)
留意,这儿运用了一个注入字符串到查询中的安全的办法。
怎样在一台树莓派上装置Postgres数据库
 
现在你知道了这些基础知识,假如你想去进一步把握 Postgres,查看在 Full Stack Python 上的文章(https://www.fullstackpython.com/postgresql.html)。
 
本文永久更新地址:http://www.138comgov138.com/linux/32927.html