当前位置: 首页 > 知识库问答 >
问题:

python中的Postgres数据库连接[重复]

袁奇文
2023-03-14

如何用Python访问linux服务器机器上的postgre数据库?我已经用putty终端访问了它,但我需要通过python访问数据库中的表,我无法做到这一点。

共有1个答案

琴俊良
2023-03-14
#!/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中访问。要允许使用登录/密码对连接到服务器的用户在pg_hba.conf中取消注释或添加以下行(通常位于/etc/postgreSQL/{postgreSQL}/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端口转发可以访问本地计算机上远程服务器的5432端口。在这种情况下,将localhost保留在脚本中。

后者可能是最简洁、最快的选择,因为您似乎已经拥有了ssh访问权限,并且不需要以这种方式扰乱数据库配置。此外,可能不允许更改配置。

 类似资料:
  • 本文向大家介绍Python中的Oracle数据库连接,包括了Python中的Oracle数据库连接的使用技巧和注意事项,需要的朋友参考一下 Python可以使用名为cx_Oracle的python软件包连接到oracle。Oracle是著名且广泛使用的数据库之一,而python的数据处理功能可以很好地利用这种连接性。在本文中,我们将看到如何连接到oracle数据库和查询数据库。 安装cx_Orac

  • 在将Django docker容器连接到Postgres数据库时,我收到以下错误。 下面是运行容器的Dockerfile pg_hba.conf->宿主all all 0.0.0.0/0 md5 我已经读到上面的以下细节打开数据库上的连接。

  • 到目前为止,我一直在Spring Batch中使用内存中的H2 DB。然而,现在我切换到连接外部postgres DB。这是我的连接对象(有些模糊): 当我开始申请时,我得到: 原因:org。springframework。jdbc。BadSqlGrammarException:PreparedStatementCallback;错误的SQL语法[从批处理作业实例中选择作业实例ID、作业名称,其中

  • 我试图连接到银行,但它给出了这个错误,当我尝试: 应用程序无法启动 描述: 未能配置数据源:无法配置嵌入式数据源。 原因:未能确定合适的驱动程序级别 行动: 考虑下面的内容:如果你想要一个嵌入式数据库(H2,HSQL或DeBy),请把它放在类路径上。如果要从特定配置文件加载数据库设置,则可能需要激活它(当前没有激活的配置文件)。 我的应用程序属性: 我的pom:

  • 问题内容: 直到现在,每当查询数据库时,我都会打开与数据库的新连接。如何实现打开连接后就可以重用的属性? 完成此操作后,请告诉我是否可以泄漏资源。 问题答案: 基本上,您需要JDBC连接池,通常需要实现接口。看看dbcp和c3p0。您的容器/服务器可能已经提供了连接池的实现。 每次 打开 连接时使用连接池时,实际上是从该连接中取出一个连接(如果池为空则 打开 一个连接)。当 关闭 连接时,它实际上

  • 用Python来编写网站,必须要能够通过python操作数据库,所谓操作数据库,就是通过python实现对数据的连接,以及对记录、字段的各种操作。上一讲提到的那种操作方式,是看官直接通过交互模式来操作数据库。 安装python-MySQLdb 要想通过python来操作数据库,还需要在已经安装了mysql的基础上安装一个称之为mysqldb的库,它是一个接口程序,python通过它对mysql数据