raspberry pi_如何在Raspberry Pi上设置Postgres数据库

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
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.org下载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脚本连接到数据库,您将需要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

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

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

raspberry pi

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值