最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何管理多個(gè)PostgreSQL數(shù)據(jù)庫的連接

 更新時(shí)間:2024年11月12日 08:28:29   作者:jzy3711  
這篇文章主要為大家詳細(xì)介紹了Python如何通過讀取配置文件中的PostgreSQL服務(wù)信息,連接到相應(yīng)的PostgreSQL數(shù)據(jù)庫,感興趣的小伙伴可以了解下

主要實(shí)現(xiàn)了通過讀取配置文件中的PostgreSQL服務(wù)信息,連接到相應(yīng)的PostgreSQL數(shù)據(jù)庫。提供了兩個(gè)連接函數(shù),postgresql_connectpostgresql_connect_encode,分別是普通的和帶編碼參數(shù)的連接函數(shù)。

操作步驟

1.導(dǎo)入相關(guān)庫

from pyhive import hive
import cx_Oracle
import pymysql
import pymssql
from optparse import OptionParser
import logging
import sys
import traceback
import re
import warnings
with warnings.catch_warnings(record=True):
    import psycopg2
reload(sys)

2. 配置PostgreSQL連接信息

這里定義了一個(gè)包含多個(gè)PostgreSQL服務(wù)配置信息的列表pgconfigs。每個(gè)配置項(xiàng)由數(shù)據(jù)庫名稱、用戶、密碼、主機(jī)和端口組成。

pgconfigs = [
    {"asset_factory": {"database": "asset_factory", "user": "asset", "password": "Ro20ot16", "host": "10.251.80.202", "port": "65432"}},
    {"asset_register": {"database": "asset_register", "user": "asset", "password": "Ro20ot16", "host": "10.251.80.202", "port": "65432"}},
    {"creditdb": {"database": "creditdb", "user": "credit", "password": "hHJ98#pE40Y", "host": "10.251.101.175", "port": "18923"}},
    {"asset_portal": {"database": "asset_portal", "user": "asset", "password": "Ro20ot16", "host": "10.251.80.202", "port": "65432"}},
    {"tyjh": {"database": "tyjh", "user": "tyjh", "password": "k5y2dwoKcFm&^OsW", "host": "10.251.90.35", "port": "18922"}},
    {"cwrl": {"database": "cwrl", "user": "cwjh_yaxin", "password": "eKYy4R3&MbaaY3Zy", "host": "10.251.90.34", "port": "18921"}},
    {"dc_new_pg": {"database": "dc", "user": "dc", "password": "Ojjkcy@jVxKIeo5C", "host": "10.251.90.36", "port": "18923"}},
    {"credit_data": {"database": "credit_data", "user": "credit_data", "password": "@G*1f*3$3DzTH6%o", "host": "10.251.90.134", "port": "18923"}},
    {"new_jf_pg_cd": {"database": "accthuiju", "user": "datacenter", "password": "KridU593&%rj90", "host": "133.37.116.192", "port": "18921"}},
    {"new_accthuiju": {"database": "accthuiju", "user": "itf_ods", "password": "2dH~fZ^8", "host": "10.251.64.226", "port": "18921"}},
    {"crm3huijupg": {"database": "crm3huijupg", "user": "datacenter", "password": "lp*36^YD", "host": "10.251.65.93", "port": "18921"}},
    {"crm3hispg": {"database": "crm3hispg", "user": "datacenter", "password": "~4nD_jWG", "host": "10.251.64.196", "port": "18921"}},
    {"hana": {"database": "hana", "user": "hana", "password": "gvptHKXVNKEGw7pk", "host": "10.251.90.94", "port": "18924"}},
    {"dataos_71_pg_dev": {"database": "dacp", "user": "dacp", "password": "jxFgCKv9GJw2ohS3", "host": "10.251.110.104", "port": "18921"}}
]

3. 定義連接函數(shù)

普通連接函數(shù)

def postgresql_connect(servicename):
    global job_task_content_ori
    global job_resource_conn_info
    global job_hdfs_dir_info
    try:
        for subconfig in pgconfigs:
            if servicename in subconfig:
                pgconfig = subconfig[servicename]
                conn = psycopg2.connect(database=pgconfig["database"], user=pgconfig["user"],
                                        password=pgconfig["password"], host=pgconfig["host"], port=pgconfig["port"])
                return conn
        print("servicename %s not found in config dictionary" % servicename)
        sys.exit(6)
    except:
        traceback.print_exc()
        print("connect pg error " + pgconfig["database"])
        sys.exit(6)

上述代碼中的postgresql_connect函數(shù):

  • 遍歷pgconfigs列表,查找與參數(shù)servicename匹配的配置。
  • 使用匹配的配置建立PostgreSQL連接。
  • 如果未找到匹配的服務(wù)名,打印錯(cuò)誤信息并退出程序。

帶編碼參數(shù)的連接函數(shù)

def postgresql_connect_encode(servicename, encoding='UTF-8'):
    global job_task_content_ori
    global job_resource_conn_info
    global job_hdfs_dir_info
    try:
        for subconfig in pgconfigs:
            if servicename in subconfig:
                pgconfig = subconfig[servicename]
                conn = psycopg2.connect(database=pgconfig["database"], user=pgconfig["user"],
                                        password=pgconfig["password"], host=pgconfig["host"], port=pgconfig["port"],
                                        client_encoding=encoding)
                return conn
        print("servicename %s not found in config dictionary" % servicename)
        sys.exit(6)
    except:
        traceback.print_exc()
        print("connect pg error " + pgconfig["database"])
        sys.exit(6)

postgresql_connect_encode函數(shù)與前一個(gè)函數(shù)類似,唯一的區(qū)別是它接受一個(gè)可選的編碼參數(shù)encoding,并將其傳遞給psycopg2.connect以設(shè)定客戶端編碼。

4.解釋關(guān)鍵點(diǎn)

配置管理pgconfigs列表包含多個(gè)數(shù)據(jù)庫配置,便于根據(jù)服務(wù)名快速查找匹配的配置項(xiàng)。

錯(cuò)誤處理:在連接失敗時(shí),打印堆棧跟蹤以幫助調(diào)試并退出程序。

編碼管理:對(duì)于需要特定編碼的連接,提供了額外的函數(shù)來設(shè)置編碼。

5.使用示例

假設(shè)你要連接到名為 dataos_71_pg_dev 的PostgreSQL服務(wù),可以像下面這樣使用這些函數(shù):

# 普通連接
conn = postgresql_connect("dataos_71_pg_dev")

# 帶編碼參數(shù)的連接
conn_with_encoding = postgresql_connect_encode("dataos_71_pg_dev", encoding='UTF-8')

完整python

#!/data/apps/python2715/bin/python
# -*- coding:utf-8 -*-

from pyhive import hive
import cx_Oracle
import pymysql
import pymssql
from optparse import OptionParser
import logging
import sys
import traceback
import re
import warnings
with warnings.catch_warnings(record=True):
    import psycopg2
reload(sys)

pgconfigs = [
    {"asset_factory": {"database": "asset_factory", "user": "asset", "password": "Ro20ot16", "host": "10.251.80.202", "port": "65432"}},
    {"asset_register": {"database": "asset_register", "user": "asset", "password": "Ro20ot16", "host": "10.251.80.202", "port": "65432"}},
    {"creditdb": {"database": "creditdb", "user": "credit", "password": "hHJ98#pE40Y", "host": "10.251.101.175", "port": "18923"}},
    {"asset_portal": {"database": "asset_portal", "user": "asset", "password": "Ro20ot16", "host": "10.251.80.202", "port": "65432"}},
    {"tyjh": {"database": "tyjh", "user": "tyjh", "password": "k5y2dwoKcFm&^OsW", "host": "10.251.90.35", "port": "18922"}},
    {"cwrl": {"database": "cwrl", "user": "cwjh_yaxin", "password": "eKYy4R3&MbaaY3Zy", "host": "10.251.90.34", "port": "18921"}},
    {"dc_new_pg": {"database": "dc", "user": "dc", "password": "Ojjkcy@jVxKIeo5C", "host": "10.251.90.36", "port": "18923"}},
    {"credit_data": {"database": "credit_data", "user": "credit_data", "password": "@G*1f*3$3DzTH6%o", "host": "10.251.90.134", "port": "18923"}},
    {"new_jf_pg_cd": {"database": "accthuiju", "user": "datacenter", "password": "KridU593&%rj90", "host": "133.37.116.192", "port": "18921"}},
    {"new_accthuiju": {"database": "accthuiju", "user": "itf_ods", "password": "2dH~fZ^8", "host": "10.251.64.226", "port": "18921"}},
    {"crm3huijupg": {"database": "crm3huijupg", "user": "datacenter", "password": "lp*36^YD", "host": "10.251.65.93", "port": "18921"}},
    {"crm3hispg": {"database": "crm3hispg", "user": "datacenter", "password": "~4nD_jWG", "host": "10.251.64.196", "port": "18921"}},
    {"hana": {"database": "hana", "user": "hana", "password": "gvptHKXVNKEGw7pk", "host": "10.251.90.94", "port": "18924"}},
    {"dataos_71_pg_dev": {"database": "dacp", "user": "dacp", "password": "jxFgCKv9GJw2ohS3", "host": "10.251.110.104", "port": "18921"}}
]


def postgresql_connect(servicename):
    global job_task_content_ori
    global job_resource_conn_info
    global job_hdfs_dir_info
    try:
        for subconfig in pgconfigs:
           if subconfig.has_key(servicename):
                pgconfig = subconfig[servicename]
                conn = psycopg2.connect(database=pgconfig["database"], user=pgconfig["user"],
                                        password=pgconfig["password"], host=pgconfig["host"], port=pgconfig["port"])
                return conn
        print("servinamename %s not found in config dictionary" % servicename)
        sys.exit(6)
    except:
        traceback.print_exc()
        print("connect pg error " + pgconfig["database"])
        sys.exit(6)


def postgresql_connect_encode(servicename, encoding='UTF-8'):
    global job_task_content_ori
    global job_resource_conn_info
    global job_hdfs_dir_info
    try:
        for subconfig in pgconfigs:
            if subconfig.has_key(servicename):
                pgconfig = subconfig[servicename]
                conn = psycopg2.connect(database=pgconfig["database"], user=pgconfig["user"],
                                        password=pgconfig["password"], host=pgconfig["host"], port=pgconfig["port"],
                                        client_encoding=encoding)
                return conn
        print("servinamename %s not found in config dictionary" % servicename)
        sys.exit(6)
    except:
        traceback.print_exc()
        print("connect pg error " + pgconfig["database"])
        sys.exit(6)

總結(jié)

這段代碼展示了如何通過配置文件管理多個(gè)PostgreSQL數(shù)據(jù)庫的連接,提供了普通連接和帶編碼參數(shù)的連接函數(shù),確保了代碼的靈活性和可重用性。通過處理異常和提供詳細(xì)的錯(cuò)誤信息,也提高了代碼的可靠性和可維護(hù)性。

以上就是Python如何管理多個(gè)PostgreSQL數(shù)據(jù)庫的連接的詳細(xì)內(nèi)容,更多關(guān)于Python PostgreSQL數(shù)據(jù)庫連接的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • opencv resize圖片為正方形尺寸的實(shí)現(xiàn)方法

    opencv resize圖片為正方形尺寸的實(shí)現(xiàn)方法

    這篇文章主要介紹了opencv resize圖片為正方形尺寸的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 聊聊Python String型列表求最值的問題

    聊聊Python String型列表求最值的問題

    這篇文章主要介紹了Python String型列表求最值的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • pycharm from lxml import etree標(biāo)紅問題及解決

    pycharm from lxml import etree標(biāo)紅問題及解決

    這篇文章主要介紹了pycharm from lxml import etree標(biāo)紅問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • python將字符串list寫入excel和txt的實(shí)例

    python將字符串list寫入excel和txt的實(shí)例

    今天小編就為大家分享一篇python將字符串list寫入excel和txt的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 使用OpenCV-python3實(shí)現(xiàn)滑動(dòng)條更新圖像的Canny邊緣檢測(cè)功能

    使用OpenCV-python3實(shí)現(xiàn)滑動(dòng)條更新圖像的Canny邊緣檢測(cè)功能

    這篇文章主要介紹了使用OpenCV-python3實(shí)現(xiàn)滑動(dòng)條更新圖像的Canny邊緣檢測(cè)功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 一文教你如何使用Python破解PDF的文本限制

    一文教你如何使用Python破解PDF的文本限制

    要解除?PDF?的文本限制,可以根據(jù)文件類型和限制原因,選擇最合適的方案,本文為大家整理了一些主流方案,大家可以根據(jù)自己的需要進(jìn)行選擇
    2026-04-04
  • 一份python入門應(yīng)該看的學(xué)習(xí)資料

    一份python入門應(yīng)該看的學(xué)習(xí)資料

    關(guān)于python入門你應(yīng)該看這些資料,幫助你快速入門python,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 一步步教你用python代碼畫一幅星空

    一步步教你用python代碼畫一幅星空

    這篇文章主要給大家介紹了關(guān)于如何使用python代碼畫一幅星空的相關(guān)資料,Python是一種非常流行的編程語言,它可以用來創(chuàng)建許多有趣的項(xiàng)目,例如繪制星空,需要的朋友可以參考下
    2023-09-09
  • Django點(diǎn)贊的實(shí)現(xiàn)示例

    Django點(diǎn)贊的實(shí)現(xiàn)示例

    本文主要介紹了Django點(diǎn)贊的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 使用Python將Word中的內(nèi)容寫入Excel

    使用Python將Word中的內(nèi)容寫入Excel

    這篇文章主要為大家詳細(xì)介紹了如何使用Python將Word文檔中的數(shù)據(jù)批量導(dǎo)入Excel,并提供了一種簡(jiǎn)單的方法來處理Word表格合并的問題,希望對(duì)大家有所幫助
    2025-07-07

最新評(píng)論

密云县| 周宁县| 永州市| 陈巴尔虎旗| 元阳县| 秦安县| 桃园县| 嘉兴市| 扶风县| 巨鹿县| 沂南县| 集安市| 汉沽区| 延川县| 浪卡子县| 襄汾县| 太白县| 大新县| 南京市| 科技| 唐海县| 琼海市| 双鸭山市| 新蔡县| 长兴县| 叶城县| 荔波县| 昌宁县| 山阴县| 安陆市| 迁安市| 永春县| 长顺县| 手机| 招远市| 广灵县| 濮阳县| 锡林郭勒盟| 公主岭市| 姚安县| 华池县|