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
(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)
来源:https://blog.csdn.net/qq_45956730/article/details/127069943


猜你喜欢
- system默认:managersys默认:change_on_install使用SQL Plus登录数据库时,system使用密码mana
- 图中图准备数据import matplotlib.pyplot as pltfig = plt.figure()x = [1, 2, 3,
- 本文介绍了django反向解析URL和URL命名空间,分享给大家,具体如下:首先明确几个概念:1.在html页面上的内容特别是向用户展示的u
- 前言tkinter是python自带的标准gui库,对于我们自己日常做一些小程序出来给自己使用是非常不错的。因为tkinter相比较其它强大
- 现在很多以内容为核心的网站上都在文章底部添加了社会化分享按钮,能让浏览用户在发现一篇有价值的文章时,可以通过社会化网络快速分享给自己的好友,
- 本文实例讲述了微信小程序实现图片上传、删除和预览功能的方法。分享给大家供大家参考,具体如下:这里主要介绍一下微信小程序的图片上传图片删除和图
- 忘了在哪看到一位编程大牛调侃,他说程序员每天就做两件事,其中之一就是处理字符串。相信不少同学会有同感。几乎任何一种编程语言,都把字符串列为最
- 以用户为中心的设计、用户体验,这两个词现在在互联网上几乎随处可见,除了设计师外,很多的用户也都在说这两个词,于是我们经常会听到诸如“这里用户
- 本文主要介绍了django admin search_fields placeholder 管理后台添加搜索框提示文字,分享给大家,具体如下
- 经常会看到这种弹出层背景变暗的效果,感觉手痒于是自己写了一个基于jquery的弹出层类。我习惯先写好结构和样式,然后再写js交互效果。结构定
- 前言Django原生自带的数据库支持是sqlite,但是我们现在常用的数据库一般是mysql,mangodb等数据库。所以我们要改变数据库的
- 本文介绍使用python+pyqt5开发桌面程序的一个可视化UI视图布局一、环境包的安装1、如果还不知道虚拟环境的可以参考,或者直接使用pi
- 本文实例为大家分享了python+pygame实现坦克大战的具体代码,供大家参考,具体内容如下一、首先导入pygame库二、源码分享#cod
- 自己尝试在本地搭建了 Django 项目后,想部署到自己云服务器上,经常多次尝试和多次踩坑(捂脸),总结如下:环境:ubuntu14, dj
- 前言cookie使用最多的地方想必是保存用户的账号与密码,可以避免用户每次登录时都要重新输入1.vue中cookie的安装在终端中输入命令n
- 一、介绍1、SqlLocalDb全称:SQL Server Express LocalDb。简化SQL Server的本地数据库。SqlLo
- 一、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录m
- 1.mysql-通过sql建立连接池连接池用sql.Open函数创建连接池,可是此时只是初始化了连接池,并没有创建任何连接。连接创建都是惰性
- 如下图,我们在做图片logo列表的时候通常是用li标签来实现。html:<ul class="logolist&q
- 尽量避免使用DOM。当需要反复使用DOM时,先把对DOM的引用存到JavaScript本地变量里再使用。使用设置innerHTML的方法来替