PostgreSQL 是一个功能强大的开源关系数据库,经常用于创建、读取、更新和删除 Python Web 应用程序数据。Psycopg2 是一个 PostgreSQL 数据库驱动程序,用作访问 PostgreSQL 服务器的 Python 客户端。这篇文章解释了如何安装 PostgreSQL在 Ubuntu 16.04 上,并在 Python 程序中运行一些基本的 SQL 查询。
我们不会在本教程中介绍对象关系映射器 (ORM),但这些步骤可以用作使用 ORM(例如 SQLAlchemy 或 Peewee)的先决条件。
我们需要的工具
尽管所有步骤都专门针对 Python 3.5 进行了测试,但我们的演练应该适用于 Python 2 或 3。除了 Python 解释器,以下是我们将使用的其他组件:
- Ubuntu 16.04.2(这些步骤也适用于其他 Ubuntu 版本)
- pip 和 virtualenv 来处理 psycopg2 应用程序依赖性
- PostgreSQL
如果您不确定如何安装 pip 和 virtualenv,请查看如何在 Ubuntu 16.04 LTS 上设 Python 3、Bottle 和 Green Unicorn 指南的前几个步骤。
安装 PostgreSQL
我们将通过apt
包管理器安装 PostgreSQL。我们需要一些包,因为我们既要运行 PostgreSQL 又要将 psycopg2 驱动程序与我们的 Python 程序一起使用。 PostgreSQL 也将作为系统服务安装,因此我们可以在需要时使用service
命令启动、停止和重新加载其配置。打开终端并运行:
sudo apt-get install postgresql libpq-dev postgresql-client postgresql-client-common
出现提示时输入您的sudo
密码,并在apt
询问您是否要安装新软件包时输入“是”。
片刻之后apt
将完成下载、安装和处理。
我们现在已经安装了 PostgreSQL,并且 PostgreSQL 服务正在后台运行。但是,我们需要创建一个用户和一个数据库实例才能真正开始使用它。使用sudo
命令切换到新的“postgres”帐户。
sudo -i -u postgres
在“postgres”帐户中,使用createuser
命令从命令行创建一个用户。 PostgreSQL 会提示您几个问题。对超级用户回答“n”,对其他问题回答“y”。
createuser matt -P --interactive
太棒了,现在我们有一个与我们的 Ubuntu 登录帐户相匹配的 PostgreSQL 用户。通过在 shell 中按“Ctrl”键和“d”退出 postgres 帐户。我们回到了自己的用户帐户。
创建一个我们可以用于测试的新数据库。您可以将其命名为“testpython”或任何您想要的应用程序名称。
createdb testpython
现在我们可以通过 PostgreSQL 命令行工具与“testpython”交互。
与 PostgreSQL 交互
psql
命令行客户端对于直接连接到我们的 PostgreSQL 服务器非常有用,无需任何 Python 代码。在提示符下使用此命令尝试psql
:
psql testpython
PostgreSQL 客户端将连接到本地主机服务器。客户端现在可以输入了:
尝试使用 PostgreSQL 的命令提示符尝试使用 \dt
和\dd
等命令。我们还可以运行 SQL 查询,例如“SELECT * from testpython”,尽管这不会返回任何数据,因为我们还没有将任何数据插入到数据库中。可以在 psql 文档中找到完整的 PostgreSQL 命令列表。
安装 psycopg2
现在已经安装了 PostgreSQL 并且我们有一个非超级用户帐户,我们可以安装 psycopg2 包。让我们弄清楚python3
可执行文件的位置,使用python3
创建一个虚拟环境,激活虚拟环境,然后使用pip
安装psycopg2 包。使用 python3
命令查找您的 which
可执行文件。
which python3
我们将看到类似于此屏幕截图中的输出。
在您的主目录或您存储 Python 虚拟环境的任何地方创建一个新的虚拟环境。指定您的python3
installation 的完整路径。
# specify the system python3 installation virtualenv --python=/usr/bin/python3 venvs/postgrestest
激活虚拟环境。
source ~/venvs/postgrestest/bin/activate
接下来我们可以使用 pip
命令从 PyPI 安装 psycopg2 Python 包。
pip install psycopg2
太棒了,我们已经在虚拟环境中安装了 PostgreSQL 驱动程序!我们现在可以通过编写几行 Python 代码来测试安装。
从 Python 使用 PostgreSQL
使用python
或python3
命令启动Python REPL。您也可以在“testpostgres.py”等 Python 文件中编写以下代码,然后使用python testpostgres.py
执行它。确保用您自己的值替换“用户”和“密码”值。
import psycopg2 try: connect_str = "dbname='testpython' user='matt' host='localhost' " + \ "password='myOwnPassword'" # use our connection values to establish a connection conn = psycopg2.connect(connect_str) # create a psycopg2 cursor that can execute queries cursor = conn.cursor() # create a new table with a single column called "name" cursor.execute("""CREATE TABLE tutorials (name char(40));""") # run a SELECT statement - no data in there, but we can try it cursor.execute("""SELECT * from tutorials""") conn.commit() # <--- makes sure the change is shown in the database rows = cursor.fetchall() print(rows) cursor.close() conn.close() except Exception as e: print("Uh oh, can't connect. Invalid dbname, user or password?") print(e)
当我们运行上面的代码时,我们不会得到任何花哨的东西,只会打印出一个空列表。然而,在这几行代码中,我们确保了与新数据库的连接正常,我们可以在其中创建新表并查询它们。
这足以您开始使用 psycopg2 和 PostgreSQL 编写更复杂的 SQL 查询。请务必查看 PostgreSQL、关系数据库和对象关系映射器 (ORM) 页面以获取更多教程。
有问题吗?发送推文@fullstackpython 或在 Full Stack Python Facebook 页面上发布消息。
看到这篇文章有什么问题了吗?在 GitHub 上创建此页面的源代码并提交拉取请求。