Python读取postgresql数据库详情

 更新时间:2022年09月28日 10:42:59   作者:水w  
这篇文章主要介绍了Python读取postgresql数据库详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

一、读取postgresql数据库

(1)首先,我们需要安装 psycopg 驱动。通过 pip 安装最新的 psycopg

pip install psycopg2 -i https://pypi.tuna.tsinghua.edu.cn/simple

(2) 创建一个数据库连接的配置文件 dbconfig.ini,添加以下内容:

[postgresql]
host = [ip地址]
port = 5432
database = xxx
user = xxx
password = xxx

配置文件中存储了数据库的连接信息:主机、端口、数据库、用户以及密码;我们需要按照自己的环境进行配置。

(3)然后,新建一个测试数据库连接的 Python 文件 postgresql_connection.py,

文件目录结构为:

 postgresql_connection.py的完整代码为:

# 导入 psycopg2 模块和 Error 对象
import psycopg2
from psycopg2 import DatabaseError
from configparser import ConfigParser
def read_db_config(filename='dbconfig.ini', section='postgresql'):
    """ 读取数据库配置文件,返回一个字典对象"""
    # 创建解析器,读取配置文件
    parser = ConfigParser()
    parser.read(filename)
 
    # 获取 postgresql 部分的配置
    db = {}
    if parser.has_section(section):
        items = parser.items(section)
        for item in items:
            db[item[0]] = item[1]
    else:
        raise Exception('文件 {1} 中未找到 {0} 配置信息!'.format(section, filename))
    return db
 
if __name__ == '__main__':
    db_config = read_db_config()
    connection = None
 
    try:
        # 使用 psycopg2.connect 方法连接 PostgreSQL 数据库
        connection = psycopg2.connect(**db_config)
        cur = connection.cursor()    # 创建一个游标
        cur.execute('SELECT version()')    # 获取 PostgreSQL 版本号
        db_version = cur.fetchone()
        print("连接成功,PostgreSQL 服务器版本:", db_version)    # 输出 PostgreSQL 版本
 
        # `在这里插入代码片`
 
        cur.close()    # 关闭游标
    except (Exception, DatabaseError) as e:
        print("连接 PostgreSQL 失败:", e)
    finally:
        if connection is not None:    # 释放数据库连接
            connection.close()
            print("PostgreSQL 数据库连接已关闭。")

(4)运行程序,

  • 首先,我们导入了 psycopg2 驱动和解析配置文件的 configparser 模块;
  • 然后,创建一个读取配置文件的 read_db_config 函数;
  • 接下来调用 psycopg2.connect 函数创建一个新的数据库连接;
  • 然后通过连接对象的 cursor 函数创建一个新的游标,并且执行查询语句返回数据库的版本;
  • 在此之后,调用游标对象的 fetchone() 方法获取返回结果并打印信息;
  • 最后,调用 close() 方法关闭游标资源和数据库连接对象。

执行以上脚本,返回的信息如下:

连接成功,PostgreSQL 服务器版本: ('PostgreSQL 12.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit',)
PostgreSQL 数据库连接已关闭。

二、查询数据

游标对象提供了三种获取返回结果的方法:fetchone() 获取下一行数据,fetchmany(size=cursor.arraysize) 获取下一组数据行,fetchall() 返回全部数据行。

(1)我们创建一个新的文件 postgresql_query.py:

# 导入 psycopg2 模块和 Error 对象
import psycopg2
from psycopg2 import DatabaseError
from configparser import ConfigParser
 
def read_db_config(filename='dbconfig.ini', section='postgresql'):
    """ 读取数据库配置文件,返回一个字典对象
    """
    # 创建解析器,读取配置文件
    parser = ConfigParser()
    parser.read(filename)
 
    # 获取 postgresql 部分的配置
    db = {}
    if parser.has_section(section):
        items = parser.items(section)
        for item in items:
            db[item[0]] = item[1]
    else:
        raise Exception('文件 {1} 中未找到 {0} 配置信息!'.format(section, filename))
 
    return db
 
 
if __name__ == '__main__':
    db_config = read_db_config()
    connection = None
 
    try:
        connection = psycopg2.connect(**db_config)        # 使用 psycopg2.connect 方法连接 PostgreSQL 数据库
        cur = connection.cursor()        # 创建一个游标
 
        # 定义 SQL 语句
        sql = """ select id, name, age from users"""
        cur.execute(sql)        # 执行 SQL 命令
        print("用户数量:", cur.rowcount)
 
        # 获取结果
        user = cur.fetchone()
        while user is not None:
            print(user)
            user = cur.fetchone()
 
        cur.close()        # 关闭游标
    except (Exception, DatabaseError) as e:
        print("操作失败:", e)
    finally:
        if connection is not None:        # 释放数据库连接
            connection.close()

(2)游标对象的 rowcount 属性代表了返回的数据行数,fetchone() 方法返回一行数据或者 None,while 循环用于遍历和打印查询结果。由于 users 表中目前只有一行数据,

执行以上文件的结果如下:

用户数量: 2
(1, 'lane', False)
(2, 'lane_dynamic', False)

到此这篇关于Python读取postgresql数据库详情的文章就介绍到这了,更多相关Python读取postgresql内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

    Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解

    这篇文章主要为大家介绍了Pandas处理DataFrame稀疏数据及维度不匹配数据分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 详解python函数的闭包问题(内部函数与外部函数详述)

    详解python函数的闭包问题(内部函数与外部函数详述)

    这篇文章主要介绍了python函数的闭包问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 对python中的logger模块全面讲解

    对python中的logger模块全面讲解

    下面小编就为大家分享一篇对python中的logger模块全面讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python实现自动合并Word并添加分页符

    Python实现自动合并Word并添加分页符

    这篇文章主要为大家详细介绍了如何基于Python实现对多个Word文档加以自动合并,并在每次合并时按要求增添一个分页符的功能,感兴趣的可以了解一下
    2023-02-02
  • 使用Python请求http/https时如何设置失败重试次数

    使用Python请求http/https时如何设置失败重试次数

    这篇文章主要介绍了使用Python请求http/https时如何设置失败重试次数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python Flask RESTful使用demo演示

    Python Flask RESTful使用demo演示

    这篇文章主要为大家介绍了Python Flask RESTful使用demo演示,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python爬虫的两套解析方法和四种爬虫实现过程

    Python爬虫的两套解析方法和四种爬虫实现过程

    本文想针对某一网页对 python 基础爬虫的两大解析库( BeautifulSoup 和 lxml )和几种信息提取实现方法进行分析,及同一网页爬虫的四种实现方式,需要的朋友参考下吧
    2018-07-07
  • Python3操作YAML文件格式方法解析

    Python3操作YAML文件格式方法解析

    这篇文章主要介绍了Python3操作YAML文件格式方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python跨文件使用全局变量的实现

    python跨文件使用全局变量的实现

    这篇文章主要介绍了python跨文件使用全局变量的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Linux环境下GPU版本的pytorch安装

    Linux环境下GPU版本的pytorch安装

    使用默认的源地址下载速度很慢,所以一般都是使用国内源,今天花了点时间配置安装,所以记录一下,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论