raspberry pi
数据库是向项目或应用程序添加数据持久性的好方法。 您可以在一个会话中写入数据,下次您要查找它时就可以在那里。 设计良好的数据库可以有效地在大型数据集中查找数据,而您不必担心它的外观,也不必担心要查找的内容。 为基本的CRUD (创建,记录,更新,删除)应用程序设置数据库非常简单,这是一种常见的模式,在许多项目中非常有用。
为什么选择PostgreSQL (俗称Postgres)? 就功能和性能而言,它被认为是最好的开源数据库。 如果您使用过MySQL,将会感到很熟悉,但是当您需要更高级的用法时,您会发现Postgres中的优化要优越得多。 它易于安装,易于使用,易于固定,并且在Raspberry Pi 3上运行良好。
本教程说明如何在Raspberry Pi上安装Postgres。 创建表; 编写简单的查询; 在Raspberry Pi,PC或Mac上使用pgAdmin GUI; 并通过Python与数据库进行交互。
了解了基础知识之后,您可以通过连接多个表的复杂查询使应用程序更进一步,这时您需要考虑优化,最佳设计实践,使用主键和外键等。
安装
首先,您需要安装Postgres和其他一些软件包。 连接到Internet时,打开一个终端窗口并运行以下命令:
sudo apt
install postgresql libpq-dev postgresql-client
postgresql-client-common
-y

完成后,切换到Postgres用户以配置数据库:
sudo su postgres
现在,您可以创建一个数据库用户。 如果创建的用户名与您的Unix用户帐户之一相同,则该用户将自动被授予对数据库的访问权限。 因此,为了简单起见,在本教程中,我假设您使用的是默认的pi用户。 运行createuser命令以继续:
createuser pi -P --interactive
出现提示时,输入密码(记住密码),为超级用户选择n ,为接下来的两个问题选择y 。

现在使用外壳连接到Postgres并创建一个测试数据库:
$ psql
> create database
test ;
通过按两次Ctrl + D从psql shell退出,然后再次从Postgres用户退出,您将再次以pi用户身份登录。 由于您创建了一个名为pi的Postgres用户,因此您可以在不使用凭据的情况下从此处访问Postgres shell:
$ psql 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
)

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的另一个有用的事情是,您可以直接在Pi上使用它,也可以在与Pi上的数据库远程连接的另一台计算机上使用它。
如果要在Raspberry Pi本身上访问它,则可以使用apt安装它:
sudo apt install pgadmin3
如果您使用的是基于Debian的系统(如Ubuntu),则完全相同。 如果您使用的是其他发行版,请尝试使用与系统等效的命令。 或者,或者如果您使用的是Windows或macOS,请尝试从pgAdmin.org下载pgAdmin。 请注意, apt中可用的版本为pgAdmin3,而较新的版本pgAdmin4可从网站上获得。
要在同一Raspberry Pi上使用pgAdmin连接到数据库,只需从主菜单中打开pgAdmin3,单击新的连接图标,然后完成注册字段。 在这种情况下,您只需要一个名称(您选择连接名称,例如test),将用户名更改为“ pi”,然后将其余字段保留为空白(或原样保留)。 单击确定,您将在左侧的侧面板中找到一个新连接。

要使用pgAdmin从另一台计算机连接到Pi的数据库,首先需要编辑PostgreSQL配置以允许远程连接:
1.编辑PostgreSQL配置文件/etc/postgresql/9.6/main/postgresql.conf以取消注释listen_addresses行,并将其值从localhost更改为* 。 保存并退出。
2.编辑pg_hba配置文件/etc/postgresql/9.6/main/pg_hba.conf改变对于IPv4 127.0.0.1/32到0.0.0.0/0和:: 1/128 :: / 0的IPv6。 保存并退出。
3.重新启动PostgreSQL服务: sudo服务postgresql restart 。
请注意,如果您使用的是较旧的Raspbian映像或其他发行版,则版本号可能会有所不同。

完成后,在另一台计算机上打开pgAdmin并创建一个新连接。 这次,除了给连接起一个名字外,还要输入Pi的IP地址作为主机(可以通过将鼠标悬停在任务栏中的WiFi图标上或在终端中键入hostname -I来找到)。

无论是本地连接还是远程连接,单击以打开服务器组>服务器>测试>模式>公共>表 ,右键单击人员表,然后选择“ 查看数据”>“查看前100行” 。 现在,您将看到之前输入的数据。

现在,您可以使用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,请参阅Full Stack Python上的这篇文章。
翻译自: https://opensource.com/article/17/10/set-postgres-database-your-raspberry-pi
raspberry pi