Python連接到PostgreSQL數(shù)據(jù)庫(kù)的方法詳解
本文介紹了創(chuàng)建與 PostgreSQL 上的數(shù)據(jù)庫(kù)的連接的過(guò)程。 我們需要安裝 PostgreSQL 和創(chuàng)建數(shù)據(jù)庫(kù)等先決條件,如下所述。
在系統(tǒng)中安裝 PostgreSQL
顧名思義,PostgreSQL 是一款為高效管理數(shù)據(jù)庫(kù)系統(tǒng)而創(chuàng)建的 SQL 系統(tǒng)軟件。
在連接Python之前需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)。 Postgres,實(shí)現(xiàn)它。
許多剛開(kāi)始學(xué)習(xí)數(shù)據(jù)庫(kù)開(kāi)發(fā)的初學(xué)者仍然感到困惑。 據(jù)了解,數(shù)據(jù)庫(kù)是使用 pgAdmin 而不是 PostgreSQL 創(chuàng)建的。
實(shí)際上,前者管理數(shù)據(jù)庫(kù),而后者是構(gòu)建數(shù)據(jù)庫(kù)的框架。
在創(chuàng)建數(shù)據(jù)庫(kù)之前,pgAdmin 需要與 PostgreSQL 鏈接。 所以,首先需要安裝PostgreSQL。
Postgres的安裝包可以在PostgreSQL官網(wǎng)的下載區(qū)找到。 然后,用戶可以從那里下載并安裝該應(yīng)用程序。
有多種安裝程序可用于 Mac、Linux 和 Windows 等操作系統(tǒng)。
用戶還可以獲取源代碼并在其 PC 上手動(dòng)編譯并安裝 pgAdmin4。
pgAdmin 是一個(gè)用于管理在 PostgreSQL 上運(yùn)行的數(shù)據(jù)庫(kù)的有效工具。 可以在應(yīng)用程序的在線網(wǎng)頁(yè)上找到安裝程序等可下載文件。
人們可以從 pgAdmin 的所有穩(wěn)定版本的列表中進(jìn)行選擇,以及與 PostgreSQL 過(guò)程類(lèi)似的其他安裝包發(fā)行版。
一旦 pgAdmin 安裝到系統(tǒng)中,就可以創(chuàng)建數(shù)據(jù)庫(kù)。
使用 pgAdmin 創(chuàng)建數(shù)據(jù)服務(wù)器和數(shù)據(jù)庫(kù)
本節(jié)包含兩個(gè)小節(jié)。 第一部分解釋如何創(chuàng)建數(shù)據(jù)服務(wù)器,第二部分重點(diǎn)介紹數(shù)據(jù)庫(kù)。
在 pgAdmin 中創(chuàng)建數(shù)據(jù)服務(wù)器
在創(chuàng)建任何數(shù)據(jù)庫(kù)之前,需要正確設(shè)置 pgAdmin。 系統(tǒng)會(huì)提示您輸入主密碼,該密碼將在創(chuàng)建或訪問(wèn)新數(shù)據(jù)庫(kù)時(shí)使用。
提供密碼后將出現(xiàn) pgAdmin 網(wǎng)頁(yè)。 必須搭建新的服務(wù)器來(lái)生成新的數(shù)據(jù)庫(kù)。
添加新服務(wù)器按鈕會(huì)創(chuàng)建一個(gè)對(duì)話窗口,可以在其中構(gòu)建新服務(wù)器。

首先顯示的窗口提供了正在設(shè)置的服務(wù)器的功能。 在本文中,其中一些將由用戶輸入提供,而其他一些則由系統(tǒng)生成并保持原樣。
首先,需要服務(wù)器的名稱。 之后,轉(zhuǎn)到連接菜單。
那里需要主機(jī)名,通常是 localhost。 端口必須設(shè)置為 5432。
遵循以上幾點(diǎn)就足以創(chuàng)建一個(gè)有用的數(shù)據(jù)服務(wù)器。
在 pgAdmin 中創(chuàng)建數(shù)據(jù)庫(kù)
一旦數(shù)據(jù)服務(wù)器啟動(dòng)并運(yùn)行,就可以創(chuàng)建數(shù)據(jù)庫(kù)。 創(chuàng)建的服務(wù)器顯示在應(yīng)用程序窗口的左側(cè),稱為儀表板。
左側(cè)面板中服務(wù)器名稱旁邊有一個(gè)下拉圖標(biāo)。 單擊此圖標(biāo)時(shí)會(huì)彈出密碼對(duì)話框,請(qǐng)求系統(tǒng)的主密碼。

菜單顯示系統(tǒng)內(nèi)創(chuàng)建的所有服務(wù)器。 它保持停用狀態(tài),直到通過(guò)單擊并出現(xiàn)密碼提示將其激活。
右鍵單擊數(shù)據(jù)庫(kù)區(qū)域并選擇創(chuàng)建。 為數(shù)據(jù)庫(kù)命名,然后在所有者部分選擇 postgres; 然后,必須設(shè)置數(shù)據(jù)庫(kù)定義。
數(shù)據(jù)庫(kù)的定義有多個(gè)選項(xiàng)需要設(shè)置。 以下是眾多可用選項(xiàng)中的一些更重要的選項(xiàng)。
- 編碼必須設(shè)置為 - UTF - 8。
- 模板應(yīng)在 Postgres 中設(shè)置。
- 表空間應(yīng)設(shè)置為 pg_default。
排序規(guī)則和字符類(lèi)型應(yīng)按原樣設(shè)置,而連接限制設(shè)置為-1。 轉(zhuǎn)到標(biāo)有 sql 的菜單將給出此處使用的查詢的概述。
單擊“保存”將創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
將 PostgreSQL 數(shù)據(jù)庫(kù)連接到 Python 的步驟
使用 Python 連接到數(shù)據(jù)庫(kù)分為三個(gè)步驟。 首先,服務(wù)器的信息存儲(chǔ)在配置文件中。
將創(chuàng)建一個(gè) Python 文件,用于解析配置 (.ini) 文件并在下一步中加載服務(wù)器。 在最后一步中,創(chuàng)建一個(gè)連接數(shù)據(jù)庫(kù)的 Python 文件。
在本文中,程序使用 psycopg2 導(dǎo)入包連接到 PostgreSQL 數(shù)據(jù)庫(kù),獲取數(shù)據(jù)庫(kù)版本,然后打印它們。
創(chuàng)建存儲(chǔ)服務(wù)器信息的配置 (.ini) 文件
該文件存儲(chǔ)與服務(wù)器相關(guān)的詳細(xì)信息,有助于 config.py 文件配置數(shù)據(jù)庫(kù)。 文件頭位于文件的頂部,用于聲明所使用的 RDBMS。
- host - 此處提供所使用的主機(jī)或服務(wù)器。
- database - 此處給出了需要針對(duì)的特定數(shù)據(jù)庫(kù)。
- user - 用戶應(yīng)指定為 postgres,因?yàn)樗?RDBMS。
- password - 必須在此處輸入創(chuàng)建數(shù)據(jù)庫(kù)時(shí)在 pgAdmin 中給出的主密碼。

創(chuàng)建信息文件后,可以在配置文件中使用它。
創(chuàng)建解析配置文件的 Python 文件
該程序使用導(dǎo)入包c(diǎn)onfigparser。 方法配置使用兩個(gè)參數(shù)聲明:文件名和部分。
變量解析器被初始化,從變量文件名中讀取文件。
下面是從數(shù)據(jù)庫(kù)中提取項(xiàng)目的 get 方法。 get 部分放在 if-else 語(yǔ)句內(nèi),其中 else 方法處理異常。
最后返回變量數(shù)據(jù)庫(kù)。
from configparser import ConfigParser
def config(filename='server_info.ini', section='postgresql'):
parser = ConfigParser()
parser.read(filename)
database = {}
if parser.has_section(section):
params = parser.items(section)
for param in params:
database[param[0]] = param[1]
else:
raise Exception('Section {0} not found in the {1} file'.format(section, filename))
return database
連接 PostgreSQL 數(shù)據(jù)庫(kù)的步驟
該程序有兩個(gè)導(dǎo)入文件。
- psycopg2
- config
創(chuàng)建了一個(gè)連接到 PostgreSQL 數(shù)據(jù)庫(kù)服務(wù)器的方法 connect。
聲明了一個(gè)變量 param,用于讀取連接的參數(shù)。 這些參數(shù)用于連接到數(shù)據(jù)庫(kù)服務(wù)器。
語(yǔ)法 psycopg2.connect(**params) 加載連接參數(shù)并連接到數(shù)據(jù)庫(kù)服務(wù)器。 聲明了另一個(gè)變量 var_cur,用于存儲(chǔ)由 connection.cursor 語(yǔ)法創(chuàng)建的游標(biāo)。
連接建立后,將顯示數(shù)據(jù)庫(kù)的 PostgreSQL 版本。 var_cur.execute 執(zhí)行語(yǔ)句 SELECT version()。
該版本被加載到變量 version_of_database 中,然后由 fetchone() 函數(shù)顯示,該函數(shù)一次獲取單個(gè)元素。 然后打印該變量。
獲取數(shù)據(jù)庫(kù)版本后,使用 var_cur.close() 關(guān)閉游標(biāo)。
添加異常處理塊以引發(fā)錯(cuò)誤異常。 在 except 塊內(nèi),當(dāng)無(wú)法連接到數(shù)據(jù)庫(kù)或未找到數(shù)據(jù)庫(kù)時(shí),程序會(huì)打印一條錯(cuò)誤消息。
在異常處理結(jié)束時(shí),添加一個(gè)finally 塊,使用語(yǔ)法 connection.close() 關(guān)閉連接。 連接關(guān)閉后,數(shù)據(jù)庫(kù)會(huì)打印一條消息,確認(rèn)連接已關(guān)閉。
最后調(diào)用方法connection。
import psycopg2
from config import config
def connect():
connection = None
try:
params = config()
print('Connection made to the postgresql database')
connection = psycopg2.connect(**params)
var_cur = connection.cursor()
print('Database version is - ')
var_cur.execute('SELECT version()')
version_of_database = var_cur.fetchone()
print(version_of_database)
var_cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if connection is not None:
connection.close()
print('Database connection closed.')
if __name__ == '__main__':
connect()
輸出:

總結(jié)
本文討論數(shù)據(jù)庫(kù)創(chuàng)建并解釋如何在 PostgreSQL 中創(chuàng)建數(shù)據(jù)庫(kù)。 軟件工具 pgAdmin 的不同功能。
大家將詳細(xì)學(xué)習(xí)如何使用 Python 連接數(shù)據(jù)庫(kù),以便快速掌握并在實(shí)際項(xiàng)目中使用。
到此這篇關(guān)于Python連接到PostgreSQL數(shù)據(jù)庫(kù)的方法詳解的文章就介紹到這了,更多相關(guān)Python連接PostgreSQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何解決django-celery啟動(dòng)后迅速關(guān)閉
在本篇文章里小編給大家整理的是關(guān)于django-celery啟動(dòng)后迅速關(guān)閉的解決方法,有需要的朋友們學(xué)習(xí)下。2019-10-10
python實(shí)現(xiàn)Oracle查詢分組的方法示例
這篇文章主要介紹了python實(shí)現(xiàn)Oracle查詢分組的方法,結(jié)合實(shí)例形式分析了python使用group by子句及having子句實(shí)現(xiàn)Oracle查詢分組的相關(guān)操作技巧,需要的朋友可以參考下2020-04-04
python基于Node2Vec實(shí)現(xiàn)節(jié)點(diǎn)分類(lèi)及其可視化示例詳解
這篇文章主要為大家介紹了python基于Node2Vec實(shí)現(xiàn)節(jié)點(diǎn)分類(lèi)及其可視化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Python Dict找出value大于某值或key大于某值的所有項(xiàng)方式
這篇文章主要介紹了Python Dict找出value大于某值或key大于某值的所有項(xiàng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
pytorch.range()和pytorch.arange()的區(qū)別及說(shuō)明
這篇文章主要介紹了pytorch.range()和pytorch.arange()的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08

