python 中的 Postgres 数据库连接
Postgres database connection in python
如何访问 python 中 linux 服务器计算机上的 postgre 数据库?
我已经使用腻子终端访问了它,但我需要通过 python 访问数据库中的表,但我无法做到这一点。
#!/usr/bin/env python3
import sys
import psycopg2
try:
conn = psycopg2.connect("dbname='dbname' user='dbuser' host='localhost' port='5432' password='dbpass'")
except psycopg2.DatabaseError:
sys.exit('Failed to connect to database')
try:
cursor = conn.cursor()
cursor.execute("SELECT * FROM test_table WHERE id < 10000")
dbRecord = cursor.fetchone()
if dbRecord == None:
print('ERROR: First record not found', file=sys.stderr)
else:
print('Loaded {}'.format(dbRecord))
dbRecordId = dbRecord[0]
conn.commit()
cursor.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
此外,您可能需要在 postgres 中允许访问。要允许用户使用 login/password 连接到服务器,请取消注释或在 pg_hba.conf
中添加以下行(通常位于 /etc/postgresql/{postgres_version}/main/pg_hba.conf
中):
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
编辑: 哦,我刚刚意识到你的 postgres 服务器在远程机器上。那么以下选项可能适用:
- 将您的 IP 添加到上面的
pg_hba.conf
配置中,并在脚本中将 host='localhost'
更改为 host='your.server.address.or.ip'
。或者:
- 使用 ssh port forwarding 可以在您的本地计算机上访问远程服务器的 5432 端口。在这种情况下,请在脚本中保留
localhost
。
后者可能是最干净和最快的选择,因为您似乎已经拥有 ssh 访问权限,并且您不需要那样搞乱数据库配置。此外,您可能不允许更改配置。
要将 PostgreSQL 连接到 python,您需要安装 psycopg2 模块。此外,还有一些其他模块,如 bpgsql、ocpgdb、PyGreSQL
安装 psycopg2
pip 安装 psycopg2
您还可以使用以下命令安装特定版本。
pip 安装 psycopg2=2.7.5
连接 PostgreSQL 数据库并对要连接的数据库名称执行 SQL 查询。
从 Python
连接到 PostgreSQL 后,您应该得到以下输出
You are connected to - ('PostgreSQL 10.3')
PostgreSQL connection is closed
请参阅此 link 以获取完整指南:
https://pynative.com/python-postgresql-tutorial/#targetText=Use%20the%20connect()%20method,connection%20after%20your%20work%20completes.
如何访问 python 中 linux 服务器计算机上的 postgre 数据库? 我已经使用腻子终端访问了它,但我需要通过 python 访问数据库中的表,但我无法做到这一点。
#!/usr/bin/env python3
import sys
import psycopg2
try:
conn = psycopg2.connect("dbname='dbname' user='dbuser' host='localhost' port='5432' password='dbpass'")
except psycopg2.DatabaseError:
sys.exit('Failed to connect to database')
try:
cursor = conn.cursor()
cursor.execute("SELECT * FROM test_table WHERE id < 10000")
dbRecord = cursor.fetchone()
if dbRecord == None:
print('ERROR: First record not found', file=sys.stderr)
else:
print('Loaded {}'.format(dbRecord))
dbRecordId = dbRecord[0]
conn.commit()
cursor.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
此外,您可能需要在 postgres 中允许访问。要允许用户使用 login/password 连接到服务器,请取消注释或在 pg_hba.conf
中添加以下行(通常位于 /etc/postgresql/{postgres_version}/main/pg_hba.conf
中):
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
编辑: 哦,我刚刚意识到你的 postgres 服务器在远程机器上。那么以下选项可能适用:
- 将您的 IP 添加到上面的
pg_hba.conf
配置中,并在脚本中将host='localhost'
更改为host='your.server.address.or.ip'
。或者: - 使用 ssh port forwarding 可以在您的本地计算机上访问远程服务器的 5432 端口。在这种情况下,请在脚本中保留
localhost
。
后者可能是最干净和最快的选择,因为您似乎已经拥有 ssh 访问权限,并且您不需要那样搞乱数据库配置。此外,您可能不允许更改配置。
要将 PostgreSQL 连接到 python,您需要安装 psycopg2 模块。此外,还有一些其他模块,如 bpgsql、ocpgdb、PyGreSQL
安装 psycopg2
pip 安装 psycopg2
您还可以使用以下命令安装特定版本。
pip 安装 psycopg2=2.7.5
连接 PostgreSQL 数据库并对要连接的数据库名称执行 SQL 查询。 从 Python
连接到 PostgreSQL 后,您应该得到以下输出You are connected to - ('PostgreSQL 10.3')
PostgreSQL connection is closed
请参阅此 link 以获取完整指南: https://pynative.com/python-postgresql-tutorial/#targetText=Use%20the%20connect()%20method,connection%20after%20your%20work%20completes.