当前位置: 首页 > 科技观察

如何在RaspberryPi上安装Postgres数据库

时间:2023-03-16 23:57:05 科技观察

在您的下一个RaspberryPi项目上安装、配置和使用流行的开源数据库Postgres。数据库是存储项目或应用程序持续增长的数据的好方法。您可以在一个会话中将数据写入数据库,并在下次需要查找时找到它。一个设计良好的数据库可以在庞大的数据集中高效地查找数据,只需要告诉它你要查找什么,而不管它是如何找到的。为基本的CRUD(创建、记录、更新、删除)应用程序设置数据库非常简单,而且它是一种非常常见的模式,也适用于许多项目。为什么PostgreSQL一般被称为Postgres?它被认为是功能和性能最强的开源数据库。如果您使用过MySQL,它们非常相似。但是,如果您希望使用其更高级的功能,您会发现优化Postgres相对容易。它易于安装、易于使用、方便且安全,并且在RaspberryPi3上运行良好。本教程介绍了如何在RaspberryPi上安装Postgres;创建一个表;编写简单的查询;在RaspberryPi、PC或Mac上使用pgAdminGUI;并从Python中与数据库交互。掌握了这些基础知识后,您就可以让您的应用程序使用复合查询来连接多个表。届时你需要考虑的是如何使用主键或外键优化和最佳实践等。在开始安装时,你需要安装Postgres和一些其他包。打开终端窗口并连接到Internet,然后运行以下命令:sudoaptinstallpostgresqllibpq-devpostgresql-clientpostgresql-client-common-yinstallingpostgres安装完成后,切换到Postgres用户配置数据库:sudosupostgres现在,您可以创建数据库用户。如果您创建一个与您的Unix用户帐户同名的用户,该用户将自动被授予对数据库的访问权限。因此,在本教程中,为简单起见,我们假设您使用的是默认用户pi。运行createuser命令继续:createuserpi-P--interactive出现提示时,输入密码(记住),选择n使其成为非超级用户,接下来的两个每个问题都选择y(LCTT译注:允许分别创建数据库和其他用户)。创建一个postgres用户现在,使用Postgresshell连接到Postgres以创建一个测试数据库:$psql>createdatabasetest;按两次Ctrl+D退出psqlshell和postgres用户,并再次以pi用户登录。在您创建了一个名为pi的Postgres用户之后,您可以从这里访问Postgresshell而无需登录凭据:$psqltest您现在已连接到“测试”数据库。该数据库当前为空且不包含任何表。您可以在psqlshell中创建一个简单的表:test=>createtablepeople(nametext,companytext);现在您可以将数据插入表中:test=>insertinpeoplevalues('BenNuttall','RaspberryPiFoundation');test=>insertinpeoplevalues('RikkiEndsley','RedHat');然后尝试查询:test=>select*frompeople;name|company----------------+--------------------------BenNuttall|RaspberryPiFoundationRikkiEndsley|RedHat(2rows)apostgresquerytest=>selectnamefrompeoplewherecompany='RedHat';name|company----------------+---------RikkiEndsley|RedHat(1row)pgAdmin如果你想使用图形工具访问数据库,你可以使用它。PgAdmin是一个功能齐全的PostgreSQLGUI,它允许您创建和管理数据库和用户、创建和修改表、执行查询以及在类似于电子表格的熟悉视图中浏览结果。psql命令行工具非常适合简单查询,您会发现很多高级用户一直在使用它,因为它执行速度很快(而且因为他们不需要求助于GUI),但是,普通用户学习和操作数据库,使用pgAdmin是更合适的方式。关于pgAdmin可以做的其他事情:你可以用它直接连接到树莓派上的数据库,或者用它从其他计算机远程连接到树莓派上的数据库。如果你想访问RaspberryPi,你可以apt安装它:sudoaptinstallpgadmin3它与基于Debian的系统(如Ubuntu)完全相同;如果您在其他发行版上安装,请尝试为您的系统使用等效命令。或者,如果您使用的是Windows或macOS,请尝试从pgAdmin.org下载pgAdmin。请注意,apt上可用的版本是pgAdmin3,而最新版本pgAdmin4可以在其网站上找到。要在同一个RaspberryPi上使用pgAdmin连接到您的数据库,只需从主菜单打开pgAdmin3,单击新连接图标,然后完成注册。此时,你会需要一个名字(连接名,比如test),把用户改成“pi”,然后其余的输入框留空(或者原样不动)。单击“确定”,您将在左侧配置文件中找到一个新连接。使用pgadmin连接您的数据库要从另一台计算机使用pgAdmin连接到您的RaspberryPi数据库,您首先需要编辑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服务:sudoservicepostgresqlrestart。请注意,如果您使用的是较旧的Raspbian镜像或其他发行版,版本号可能会有所不同。编辑postgresql配置以允许远程连接完成此操作后,在另一台计算机上打开pgAdmin并创建一个新连接。此时,您需要提供一个连接名称,并输入RaspberryPi的IP地址作为主机(这可以通过将鼠标悬停在任务栏中的WiFi图标上或通过在终端中键入hostname-I来找到)。远程连接无论您是连接到本地数据库还是远程数据库,单击打开ServerGroups>Servers>test>Schemas>public>Tables,右键单击people表,然后选择ViewData>Viewtop100Rows。您现在将看到您之前输入的数据。查看测试数据您现在可以创建和修改数据库和表格、管理用户以及使用GUI编写您自己的查询。您可能会发现这种可视化方法比命令行更易于管理。Python要从Python脚本连接到您的数据库,您将需要Psycopg2Python包。您可以使用pip安装它:sudopip3installpsycopg2现在打开Python编辑器并编写一些代码以连接到您的数据库:importpsycopg2conn=psycopg2.connect('dbname=test')cur=conn.cursor()cur.execute('select*frompeople')results=cur.fetchall()forresultinresults:print(result)运行这段代码可以看到查询结果。请注意,如果您连接到远程数据库,则需要在连接字符串中提供更多凭据,例如,添加主机IP、用户名和数据库密码:conn=psycopg2.connect('host=192.168.86.31user=pipassword=raspberrydbname=test')你甚至可以创建一个函数来运行特定的查询:defget_all_people():query="""SELECT*FROMpeople"""cur.execute(query)returncur.fetchall()withaparameter查询:defget_people_by_company(company):query="""SELECT*FROMpeopleWHEREcompany=%s"""values=(company,)cur.execute(query,values)returncur.fetchall()或者甚至是增加记录的函数:defadd_person(name,company):query="""INSERTINTOPeopleVALUES(%s,%s)"""values=(name,company)cur.execute(query,values)注意这里使用注入的字符串来查询安全的方式,你不想被小鲍勃的办公桌杀死!Python现在您已经了解了基础知识,如果您想进一步使用Postgres,请查看关于FullStackPython的文章。(标题图片:RaspberryPiFoundation)