Python讀取postgresql數(shù)據(jù)庫詳情
一、讀取postgresql數(shù)據(jù)庫
(1)首先,我們需要安裝 psycopg 驅(qū)動。通過 pip 安裝最新的 psycopg
pip install psycopg2 -i https://pypi.tuna.tsinghua.edu.cn/simple

(2) 創(chuàng)建一個數(shù)據(jù)庫連接的配置文件 dbconfig.ini,添加以下內(nèi)容:
[postgresql] host = [ip地址] port = 5432 database = xxx user = xxx password = xxx
配置文件中存儲了數(shù)據(jù)庫的連接信息:主機(jī)、端口、數(shù)據(jù)庫、用戶以及密碼;我們需要按照自己的環(huán)境進(jìn)行配置。
(3)然后,新建一個測試數(shù)據(jù)庫連接的 Python 文件 postgresql_connection.py,
文件目錄結(jié)構(gòu)為:

postgresql_connection.py的完整代碼為:
# 導(dǎo)入 psycopg2 模塊和 Error 對象
import psycopg2
from psycopg2 import DatabaseError
from configparser import ConfigParser
def read_db_config(filename='dbconfig.ini', section='postgresql'):
""" 讀取數(shù)據(jù)庫配置文件,返回一個字典對象"""
# 創(chuàng)建解析器,讀取配置文件
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 數(shù)據(jù)庫
connection = psycopg2.connect(**db_config)
cur = connection.cursor() # 創(chuàng)建一個游標(biāo)
cur.execute('SELECT version()') # 獲取 PostgreSQL 版本號
db_version = cur.fetchone()
print("連接成功,PostgreSQL 服務(wù)器版本:", db_version) # 輸出 PostgreSQL 版本
# `在這里插入代碼片`
cur.close() # 關(guān)閉游標(biāo)
except (Exception, DatabaseError) as e:
print("連接 PostgreSQL 失?。?, e)
finally:
if connection is not None: # 釋放數(shù)據(jù)庫連接
connection.close()
print("PostgreSQL 數(shù)據(jù)庫連接已關(guān)閉。")(4)運(yùn)行程序,
- 首先,我們導(dǎo)入了 psycopg2 驅(qū)動和解析配置文件的 configparser 模塊;
- 然后,創(chuàng)建一個讀取配置文件的 read_db_config 函數(shù);
- 接下來調(diào)用 psycopg2.connect 函數(shù)創(chuàng)建一個新的數(shù)據(jù)庫連接;
- 然后通過連接對象的 cursor 函數(shù)創(chuàng)建一個新的游標(biāo),并且執(zhí)行查詢語句返回?cái)?shù)據(jù)庫的版本;
- 在此之后,調(diào)用游標(biāo)對象的 fetchone() 方法獲取返回結(jié)果并打印信息;
- 最后,調(diào)用 close() 方法關(guān)閉游標(biāo)資源和數(shù)據(jù)庫連接對象。
執(zhí)行以上腳本,返回的信息如下:
連接成功,PostgreSQL 服務(wù)器版本: ('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 數(shù)據(jù)庫連接已關(guān)閉。

二、查詢數(shù)據(jù)
游標(biāo)對象提供了三種獲取返回結(jié)果的方法:fetchone() 獲取下一行數(shù)據(jù),fetchmany(size=cursor.arraysize) 獲取下一組數(shù)據(jù)行,fetchall() 返回全部數(shù)據(jù)行。
(1)我們創(chuàng)建一個新的文件 postgresql_query.py:
# 導(dǎo)入 psycopg2 模塊和 Error 對象
import psycopg2
from psycopg2 import DatabaseError
from configparser import ConfigParser
def read_db_config(filename='dbconfig.ini', section='postgresql'):
""" 讀取數(shù)據(jù)庫配置文件,返回一個字典對象
"""
# 創(chuàng)建解析器,讀取配置文件
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 數(shù)據(jù)庫
cur = connection.cursor() # 創(chuàng)建一個游標(biāo)
# 定義 SQL 語句
sql = """ select id, name, age from users"""
cur.execute(sql) # 執(zhí)行 SQL 命令
print("用戶數(shù)量:", cur.rowcount)
# 獲取結(jié)果
user = cur.fetchone()
while user is not None:
print(user)
user = cur.fetchone()
cur.close() # 關(guān)閉游標(biāo)
except (Exception, DatabaseError) as e:
print("操作失敗:", e)
finally:
if connection is not None: # 釋放數(shù)據(jù)庫連接
connection.close()(2)游標(biāo)對象的 rowcount 屬性代表了返回的數(shù)據(jù)行數(shù),fetchone() 方法返回一行數(shù)據(jù)或者 None,while 循環(huán)用于遍歷和打印查詢結(jié)果。由于 users 表中目前只有一行數(shù)據(jù),
執(zhí)行以上文件的結(jié)果如下:
用戶數(shù)量: 2 (1, 'lane', False) (2, 'lane_dynamic', False)

到此這篇關(guān)于Python讀取postgresql數(shù)據(jù)庫詳情的文章就介紹到這了,更多相關(guān)Python讀取postgresql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mac下給python3安裝requests庫和scrapy庫的實(shí)例
今天小編就為大家分享一篇mac下給python3安裝requests庫和scrapy庫的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
使用Python的Twisted框架實(shí)現(xiàn)一個簡單的服務(wù)器
這篇文章主要介紹了使用Python的Twisted框架實(shí)現(xiàn)一個簡單的服務(wù)器,翻譯自Twisted的文檔,需要的朋友可以參考下2015-04-04
python遺傳算法之單/多目標(biāo)規(guī)劃問題
本文主要介紹了python遺傳算法之單/多目標(biāo)規(guī)劃問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
用Python實(shí)現(xiàn)zip密碼破解實(shí)例
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)zip密碼破解實(shí)例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
Python實(shí)現(xiàn)微信自動回復(fù)信息的功能(根據(jù)不同信息回復(fù)對應(yīng)的信息)
這篇文章主要介紹了Python實(shí)現(xiàn)微信自動回復(fù)信息的功能(根據(jù)不同信息回復(fù)對應(yīng)的信息),我們使用的第三方包是UIAutomation,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Python flask框架實(shí)現(xiàn)瀏覽器點(diǎn)擊自定義跳轉(zhuǎn)頁面
這篇文章主要介紹了Python flask框架實(shí)現(xiàn)瀏覽器點(diǎn)擊自定義跳轉(zhuǎn)頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Pytorch中關(guān)于RNN輸入和輸出的形狀總結(jié)
這篇文章主要介紹了Pytorch中關(guān)于RNN輸入和輸出的形狀總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
python中Event實(shí)現(xiàn)線程間同步介紹
這篇文章主要介紹了python中Event實(shí)現(xiàn)線程間同步,Event是python線程間同步一種常用的方法,下列內(nèi)容總結(jié)需要的朋友可以參考一下2022-04-04
解決python super()調(diào)用多重繼承函數(shù)的問題
今天小編就為大家分享一篇解決python super()調(diào)用多重繼承函數(shù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06

