博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
raspberry pi_如何在Raspberry Pi上设置Postgres数据库
阅读量:2527 次
发布时间:2019-05-11

本文共 5430 字,大约阅读时间需要 18 分钟。

raspberry pi

数据库是向项目或应用程序添加数据持久性的好方法。 您可以在一个会话中写入数据,下次您要查找它时就可以在那里。 设计良好的数据库可以有效地在大型数据集中查找数据,而您不必担心它的外观,也不必担心要查找的内容。 为基本的 (创建,记录,更新,删除)应用程序设置数据库非常简单,这是一种常见的模式,在许多项目中非常有用。

为什么选择 (俗称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
installing postgres

完成后,切换到Postgres用户以配置数据库:

sudo su postgres

现在,您可以创建一个数据库用户。 如果创建的用户名与您的Unix用户帐户之一相同,则该用户将自动被授予对数据库的访问权限。 因此,为了简单起见,在本教程中,我假设您使用的是默认的pi用户。 运行createuser命令以继续:

createuser pi -P --interactive

出现提示时,输入密码(记住密码),为超级用户选择n ,为接下来的两个问题选择y

creating a postgres user

现在使用外壳连接到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
)
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的另一个有用的事情是,您可以直接在Pi上使用它,也可以在与Pi上的数据库远程连接的另一台计算机上使用它。

如果要在Raspberry Pi本身上访问它,则可以使用apt安装它:

sudo apt install pgadmin3

如果您使用的是基于Debian的系统(如Ubuntu),则完全相同。 如果您使用的是其他发行版,请尝试使用与系统等效的命令。 或者,或者如果您使用的是Windows或macOS,请尝试从下载pgAdmin。 请注意, apt中可用的版本为pgAdmin3,而较新的版本pgAdmin4可从网站上获得。

要在同一Raspberry Pi上使用pgAdmin连接到数据库,只需从主菜单中打开pgAdmin3,单击新的连接图标,然后完成注册字段。 在这种情况下,您只需要一个名称(您选择连接名称,例如test),将用户名更改为“ pi”,然后将其余字段保留为空白(或原样保留)。 单击确定,您将在左侧的侧面板中找到一个新连接。

connect your database with pgadmin

要使用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/320.0.0.0/0:: 1/128 :: / 0的IPv6。 保存并退出。

3.重新启动PostgreSQL服务: sudo服务postgresql restart

请注意,如果您使用的是较旧的Raspbian映像或其他发行版,则版本号可能会有所不同。

 edit the postgresql configuration to allow remote connections

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

a remote connection

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

viewing test data

现在,您可以使用GUI创建和修改数据库和表,管理用户以及编写自己的自定义查询。 您可能会发现这种可视化方法比使用命令行更易于管理。

Python

要从Python脚本连接到数据库,您将需要 Python软件包。 您可以使用安装它:

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

现在您已经了解了基础知识。 如果您想进一步了解Postgres,请参阅上的这篇文章。

翻译自:

raspberry pi

转载地址:http://kynzd.baihongyu.com/

你可能感兴趣的文章
DS博客作业07--查找
查看>>
c# Invalidate() Update() Refresh()的区别
查看>>
work of 1/5/2016
查看>>
自己做了个微信小程序
查看>>
CMD获取当前目录的绝对路径
查看>>
HTML5新规范和CSS3新特性
查看>>
使用php后台给自己做一个页面路由,配合ajax实现局部刷新。
查看>>
类与对象(二)
查看>>
NSString 的常用方法
查看>>
mysql的engine不同,导致事物回滚失败的问题
查看>>
JAVAWeb使用POI做导出Excel
查看>>
今天解决了首页无头像被显示的问题
查看>>
charts 画折线图
查看>>
[py]__name__ 属于哪个文件
查看>>
技术分析淘宝的超卖宝贝
查看>>
i++和++1
查看>>
react.js
查看>>
实验四【bx】和loop的使用
查看>>
P1313 计算系数
查看>>
myBatis之入门示例
查看>>