📜  在Python中将 PostgreSQL 与 SQLAlchemy 连接起来

📅  最后修改于: 2022-05-13 01:54:55.920000             🧑  作者: Mango

在Python中将 PostgreSQL 与 SQLAlchemy 连接起来

在本文中,我们将讨论如何在Python中连接 PostgreSQL 和 SQLAlchemy。

为了与任何数据库管理系统连接,必须创建一个引擎对象,该对象通过提供管理数据库连接的连接池来充当中央连接源。这个 SQLAlchemy 引擎是一个全局对象,可以创建和配置一次,并多次使用同一个引擎对象进行不同的操作。

与 PostgreSQL 数据库建立连接的第一步是使用 SQLAlchemy 的 create_engine()函数创建引擎对象。

句法:

参数:

  • dialect – DBMS 的名称。方言是 SQLAlchemy 用来与各种类型的 DBAPI 和数据库(如 PostgreSQL、MySQL、MS SQL 等)通信的系统。
  • driver –在 SQLAlchemy 和数据库之间移动信息的 DB API 的名称。
  • 用户名——管理员的名字
  • 密码- 管理员的密码
  • host – 托管数据库的主机的名称
  • port – 可以访问数据库的端口号
  • database_name – 数据库的名称

注意:在代码中明确提及您的密码是极其不安全的。为了避免这种情况,我们可以使用urllib库对密码进行哈希处理,如下所示

Python3
import urllib.parse
 
urllib.parse.quote_plus("your_password")


Python3
from sqlalchemy import create_engine
 
engine = create_engine('postgresql+psycopg2://user:password\
@hostname/database_name')


Python3
import psycopg2
 
# declare the connection string specifying
# the host name database name use name
# and password
conn_string = "host='host_name' dbname='database_name'\
user='user_name' password='your_password'"
 
# use connect function to establish the connection
conn = psycopg2.connect(conn_string)


PostgreSQL 数据库建立连接

由 create_engine()函数返回的 Engine 对象还不会连接到数据库,只有在被要求对数据库执行任务时才会第一次建立连接。这种软件设计模式通常被称为延迟初始化。一旦创建了引擎对象,我们就可以利用它对数据库执行 CRUD 和其他操作。

PostgreSQL 支持一系列Python驱动程序,如 psycopg2、psycopg、py8000、asyncpg 和 psycopg2cffi,这有助于数据库和 SQLAlchemy 之间的通信。

Python3

from sqlalchemy import create_engine
 
engine = create_engine('postgresql+psycopg2://user:password\
@hostname/database_name')

使用 psycopg2 连接 PostgreSQL 数据库。

Python3

import psycopg2
 
# declare the connection string specifying
# the host name database name use name
# and password
conn_string = "host='host_name' dbname='database_name'\
user='user_name' password='your_password'"
 
# use connect function to establish the connection
conn = psycopg2.connect(conn_string)

create_engine函数或 psycopg2函数中使用的连接字符串指定了三个重要的事实,例如

  • 我们与什么样的数据库通信? (PostgreSQL)
  • 我们使用的是什么Python DBAPI 驱动程序? (心理战2)
  • 我们如何定位数据库? (本地主机:5432)

创建引擎对象后,我们可以开始向数据库提交和检索查询。

结论:

在本文中,我们讨论了如何在Python中使用 SQLAlchemy 建立与 PostgreSQL 的连接。我们还讨论了如何使用驱动程序 psycopg2(最不推荐)连接到我们的 PostgreSQL 数据库的奖励方法。