Python读取postgresql数据库详情

作者:水w 时间:2024-01-29 13:01:17 

一、读取postgresql数据库

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

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

Python读取postgresql数据库详情

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

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

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

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

文件目录结构为:

Python读取postgresql数据库详情

 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 数据库连接已关闭。

Python读取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数据库详情

来源:https://blog.csdn.net/qq_45956730/article/details/127069943

标签:Python,读取,postgresql,数据库
0
投稿

猜你喜欢

  • ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例

    2023-11-17 02:54:39
  • 简单实现python画圆功能

    2021-06-06 02:39:36
  • Python利用AutoGrad实现自动计算函数斜率和梯度

    2023-09-27 22:47:59
  • 用Assets 面板为你的站点定做颜色

    2007-02-03 11:39:00
  • eval(function(p,a,c,k,e,d)系列解密javascript程序

    2024-04-19 10:01:20
  • mysql语句实现简单的增、删、改、查操作示例

    2024-01-24 23:04:04
  • PyCharm中鼠标悬停在函数上时显示函数和帮助的解决方法

    2023-08-10 19:20:02
  • Javascript获取background属性中url的值

    2024-04-10 13:59:10
  • 浅谈Mybatis+mysql 存储Date类型的坑

    2024-01-17 19:13:14
  • 给你选择Python语言实现机器学习算法的三大理由

    2023-08-20 23:10:26
  • mysql 定时任务的实现与使用方法示例

    2024-01-17 17:07:48
  • Python 获取命令行参数内容及参数个数的实例

    2023-11-03 18:00:11
  • 在Mac中搭建go语言开发环境的操作步骤

    2024-05-09 10:11:49
  • python开发简易版在线音乐播放器

    2022-08-29 14:38:29
  • 求任意自然数内的素数

    2009-10-15 12:21:00
  • vue router-view的嵌套显示实现

    2024-05-02 16:36:20
  • python 反编译exe文件为py文件的实例代码

    2021-12-06 06:51:21
  • 对python中的控制条件、循环和跳出详解

    2022-03-08 00:41:44
  • Python中的groupby分组功能的实例代码

    2021-09-17 20:48:15
  • django-allauth入门学习和使用详解

    2022-05-24 12:36:09
  • asp之家 网络编程 m.aspxhome.com