我想通过Python连接到一个远程PostgreSQL数据库来做一些基础数据分析.该数据库需要SSL(验证ca)以及三个文件(我有):

  • 服务器根证书文件
  • 客户端证书文件
  • 客户端密钥文件

我还没有找到一个教程来描述如何与Python建立这种连接.

推荐答案

使用psycopg2模块.

您需要在连接字符串中使用ssl选项,或将它们添加为关键字参数:

import psycopg2

conn = psycopg2.connect(dbname='yourdb', user='dbuser', password='abcd1234', host='server', port='5432', sslmode='require')

在这种情况下,sslmode指定需要SSL.

要执行服务器证书验证,可以将sslmode设置为verify-fullverify-ca.您需要提供sslrootcert中服务器证书的路径.还分别为客户端证书和密钥设置sslcertsslkey值.

PostgreSQL Connection Strings documentation(另请参见参数关键字)和SSL Support对此进行了详细解释.

Postgresql相关问答推荐

"错误:无法创建用户:错误:关系\users\违反了非空约束

Postgres如何插入带有十进制逗号的实数?

将整数(以毫秒为单位的epoch时间)转换为PrimitiveDateTime

我想优化查询SQL

使用来自 docker 图像的 postgres 设置 Keycloak 21

当参数大小超过 393166 个字符时,PSQL 准备语句查询挂起

PostgreSQL - 如何获得前一个月和一周的价值?

MERGE 语句的锁定级别

postgresql查询中的正则表达式不区分大小写

如何从 .sql postgresql 备份恢复单个表?

在postgresql中按经纬度查找最近的位置

Java - 日期保存为前一天

PostgreSQL 不区分大小写的 SELECT 数组

使用 postgres regexp_replace 将字符串列表替换为始终相同的字符串

在函数中返回字段作为插入结果

如果 Column1 不为空,则按 Column1 排序,否则按 Column2 排序

Sidekiq - 无法在 5.000 秒内获得数据库连接

使用 current_setting() 判断值

postgres - 比较两个数组

PostgreSQL 条件 where 子句