psycopg2 - Python-YugabyteDB 数据库适配器
项目描述
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 目录中,并且可在网上找到,链接为 https://www.psycopg.org/docs/。
对于任何其他资源(源代码仓库、错误跟踪器、邮件列表),请检查 项目主页。
安装
构建 Psycopg 需要一些先决条件(一个 C 编译器、一些开发包):请查阅 doc 目录或在线的 安装 和 常见问题解答 文档以获取详细信息。
如果满足先决条件,您可以使用 pip 安装 psycopg,就像安装任何其他 Python 包一样,从 PyPI 下载
$ pip install psycopg2-yugabytedb
或者如果您已下载本地源代码包,可以使用 setup.py
$ python setup.py build $ sudo python setup.py install
注意 - YugabyteDB Psycopg2 需要 PostgreSQL 版本 11 或更高版本(最好是 14)
您还可以通过从 PyPI 安装 psycopg2-yugabytedb-binary 包来获取不要求编译器或外部库的独立 Windows 包
$ pip install psycopg2-yugabytedb-binary
YugabyteDB Psycopg2 功能
Yugabyte Psycopg2 驱动程序是基于 PostgreSQL psycopg2 驱动程序构建的 YSQL 分布式 Python 驱动程序。虽然上游 PostgreSQL psycopg2 驱动程序可以与 YugabyteDB 一起工作,但 Yugabyte 驱动程序通过消除外部负载均衡器的需求来增强 YugabyteDB。
它是集群感知的,这消除了外部负载均衡器的需求。
它是拓扑感知的,这对于地理位置分布的应用程序至关重要。驱动程序使用拓扑键指定的地理位置集合中的服务器。
负载均衡
Yugabyte Psycopg2 驱动程序具有以下负载均衡功能
均匀负载均衡
在此模式下,驱动程序尽力将连接均匀分布到每个 YugabyteDB 服务器。例如,如果客户端应用程序创建 100 个连接到由 10 个服务器组成的 YugabyteDB 集群,则驱动程序将为每个服务器创建 10 个连接。如果连接数不能被服务器数整除,则其中一些可能比其他的多或少一个连接。这是客户端对负载的看法,因此如果其他客户端应用程序没有使用 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 表示主要放置区域,值 :2 表示第一次回退,值 :3 表示第二次回退,依此类推。
项目详情
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp312-cp312-win_amd64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 674d43840cb7063ce5589dac831ed726f2fdbc33d510e7a65ec236e46c7f4188 |
|
MD5 | 11df51ad1d85d24a1f00e15d69192a8d |
|
BLAKE2b-256 | e0e74db66677bc10260c957ac25695ee84779fcb5841659fb2b49f8074f21f6a |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0f02f75d2038eebdf363259dffeea1409169634ace3c276a492d45e7fadf7272 |
|
MD5 | 0b3295c3496c333f57e33165243a2c55 |
|
BLAKE2b-256 | e389e3c6ae193beb4968f74f224103f88e33db0e7206bc7628a420397b4a0229 |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 3135cc36396a8d0527be45ecbb4f1424cf1016b0a5d07d90ecb182f7dba050b5 |
|
MD5 | baf8350ac238f8da26ac888b314565c0 |
|
BLAKE2b-256 | 4b2fe6cec207b729292fad361b0b1ec52456e33c06cf50a40727e74690254283 |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 92d44ea28dec354d6fa0dea03d2efe16db47a57f31c86c3bdd27b6983910fec8 |
|
MD5 | 5eea024806b8fe1950f916799e2e20b5 |
|
BLAKE2b-256 | 02e1eda7391e4fcdcbdfca1916a50f121e54aaf070429d705a10a127d45d48d8 |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 3dabd9d58dd5539b0603d9cb38b9a0d0a46d219856d3b69bd158871eb7fec9f6 |
|
MD5 | e5816335780296c8e0089adb65a76417 |
|
BLAKE2b-256 | 72aa403d9a65552e3a4a07d52da3a59c6047fb2a9daf3985a081a961c68ad4b8 |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | c39ce8372e65b56a6ce89c93533598a8bea7b5aebca1ca6ae9bfc3fcf5e3717e |
|
MD5 | 79ca23ad2bb07e176a32e4baebae396d |
|
BLAKE2b-256 | 87c0136b767e7352b8f8c23a7a3ab8537d38830131497728969339bc9242528e |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp37-cp37m-win_amd64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5d48b57b7412197bad79528a9e8310bb60e9ee9b5a17667e6dd44f6f72cc2c2d |
|
MD5 | f2248648ec26092f742666d6530cc764 |
|
BLAKE2b-256 | 16913705d7ea9af4feda64d58c05ca0e49ccd70e8a84582ecbce920ece09cb50 |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | fb7bf6ad187cfe15749d129af73ca157fef57a3546e4ef677530721e5a158677 |
|
MD5 | 279eeffb0c383b7671af017112251224 |
|
BLAKE2b-256 | ad42174c5a6ed8b28428f2a1c9b4ce6af09881a65aba99081aba79d27ec58145 |
散列值 for psycopg2_yugabytedb_binary-2.9.3.2b0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0621136f3a52da5449e443a129684168f945c5c7547b47c68ea37726919115ab |
|
MD5 | 2715784050234ef89870b56474460cb2 |
|
BLAKE2b-256 | 3e842cb08fa0d449a2199d22fef70a27294d17131f2560abc195a5ab369210e5 |