跳转到主要内容

psycopg2 - Python-PostgreSQL数据库适配器

项目描述

Psycopg是Python编程语言中最受欢迎的PostgreSQL数据库适配器。其主要特性是完全实现Python DB API 2.0规范和线程安全性(多个线程可以共享同一连接)。它旨在为大量创建和销毁游标以及进行大量并发“INSERT”或“UPDATE”操作的重度多线程应用程序设计。

Psycopg 2主要用C语言作为libpq包装器实现,因此既高效又安全。它具有客户端和服务器端游标、异步通信和通知、“COPY TO/COPY FROM”支持。许多Python类型都支持直接使用,并适配到相应的PostgreSQL数据类型;适配可以扩展和自定义,这得益于灵活的对象适配系统。

Psycopg 2既兼容Unicode,也兼容Python 3。

文档

文档包含在doc目录中,并在线上提供。

对于任何其他资源(源代码仓库、错误追踪器、邮件列表),请检查项目主页

安装

构建 Psycopg 需要一些先决条件(C 编译器,一些开发包):请查看“doc”目录或在线的安装常见问题解答文档以获取详细信息。

如果满足先决条件,您可以使用

pip

像安装其他 Python 包一样安装 psycopg,从PyPI下载

$ pip install psycopg2-yugabytedb

或者使用setup.py如果您已本地下载了源代码包

$ python setup.py build
$ sudo python setup.py install

注意 - YugabyteDB Psycopg2 需要 Postgresql 版本 11 或更高(最好是 14)

Linux/OSX:

Linux and OSX build status

Windows:

Windows build status

YugabyteDB Psycopg2 功能

Yugabyte Psycopg2 驱动程序是一个基于 PostgreSQL psycopg2 驱动程序构建的分布式 Python 驱动程序,用于 YSQL。尽管上游 PostgreSQL psycopg2 驱动程序可以与 YugabyteDB 一起使用,但 Yugabyte 驱动程序通过消除对外部负载均衡器的需求来增强 YugabyteDB。

  • 它是集群感知的,这消除了对外部负载均衡器的需求。

  • 它是拓扑感知的,这对于地理位置分布的应用至关重要。驱动程序使用拓扑键指定的地理位置集合中的服务器。

负载均衡

Yugabyte Psycopg2 驱动程序具有以下负载均衡功能

  • 均匀负载均衡

在此模式下,驱动程序尽力将连接均匀地分布到每个 YugabyteDB 服务器。例如,如果客户端应用程序创建 100 个连接到由 10 个服务器组成的 YugabyteDB 集群,则驱动程序将为每个服务器创建 10 个连接。如果连接数不能被服务器数整除,则少数服务器可能比其他服务器少 1 个或多 1 个连接。这是客户端对负载的视图,因此如果其他客户端应用程序不使用 Yugabyte JDBC 驱动程序,则服务器可能没有得到很好的平衡。

  • 拓扑感知负载均衡

由于 YugabyteDB 集群可以具有位于不同地区和可用区的服务器,因此 YugabyteDB JDBC 驱动程序是拓扑感知的,并且可以配置为仅在特定地区和区域的服务器上创建连接。这对于需要连接到地理位置最近的区域和可用区以降低延迟的客户端应用程序很有用;驱动程序只尝试均匀地负载属于指定地区和区域的服务器。Yugabyte Psycopg2 驱动程序也可以配置池。

使用方法

负载均衡连接属性

需要添加以下连接属性来启用负载均衡

  • load_balance - 通过将此属性设置为 True 启用集群感知负载均衡;默认情况下禁用。

  • topology_keys - 提供逗号分隔的地理位置值以启用拓扑感知负载均衡。地理位置可以是 cloud.region.zone。

  • yb-servers-refresh-interval - 默认情况下,用于平衡连接负载的服务器列表每隔 5 分钟刷新一次。此时间可以通过此属性调节。

在连接 URL 或字典中传递新连接属性以进行负载均衡。要启用所有服务器的均匀负载均衡,您可以在 URL 中将 load-balance 属性设置为 True,如下例所示。

连接字符串

conn = psycopg2.connect("dbname=database_name host=hostname port=port user=username  password=password load_balance=true")

连接字典

conn = psycopg2.connect(user = 'username', password='xxx', host = 'hostname', port = 'port', dbname = 'database_name', load_balance='True')

要指定拓扑键,您可以将 topology_keys 属性设置为逗号分隔的值,如下例所示。

连接字符串

conn = psycopg2.connect("dbname=database_name host=hostname port=port user=username  password=password load_balance=true topology_keys=cloud1.region1.zone1,cloud2.region2.zone2")

连接字典

conn = psycopg2.connect(user = 'username', password='xxx', host = 'hostname', port = 'port', dbname = 'database_name', load_balance='True', topology_keys='cloud1.region1.zone1,cloud2.region2.zone2')

也可以将多个拓扑传递给拓扑键属性,并且每个拓扑也可以指定一个优先级值,如下例所示。

conn = psycopg2.connect("host=127.0.0.1 port=5433 user=yugabyte dbname=yugabyte load_balance=True topology_keys=cloud1.region1.zone1:1,cloud2.region2.zone2:2")

优先级值(冒号之后)是可选的。因此,它与指定云位置的先前语法兼容。

优先级值 :1 表示主放置区域(s),值 :2 表示第一级回退,值 :3 表示第二级回退,依此类推。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

psycopg2-yugabytedb-2.9.3.2.tar.gz (391.2 kB 查看哈希值)

上传时间 源代码

构建分发

psycopg2_yugabytedb-2.9.3.2-cp311-cp311-macosx_10_9_universal2.whl (248.6 kB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

支持者