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

Python連接MySQL、PostgreSQL數(shù)據(jù)庫實(shí)現(xiàn)過程

 更新時間:2025年12月15日 11:14:47   作者:回憶式~過去.  
文章介紹了如何在Python中使用`pymysql`和`psycopg2`模塊連接MySQL和PostgreSQL數(shù)據(jù)庫,包括安裝庫、連接參數(shù)、數(shù)據(jù)庫操作和關(guān)閉連接的步驟

一、安裝庫

Python連接MySQL、PostgreSQL數(shù)據(jù)庫需要導(dǎo)入相關(guān)的模塊,分別是”pymysql“和”psycopg2“模塊,我們可以在Pycharm工具中直接搜索安裝對應(yīng)的庫然后導(dǎo)入即可,兩個數(shù)據(jù)庫連接方式基本一致,所以只拿其中一個作為演示。

如果工具安裝失敗(有可能是網(wǎng)絡(luò)原因),也可以使用pip命令進(jìn)行安裝

>>> pip3 install pymysql,psycopg2
>>> #多環(huán)境用戶需要主要pip版本

如果你的系統(tǒng)不支持 pip 命令,可以使用以下方式安裝:

1、使用 git 命令下載安裝包安裝(你也可以手動下載):

>>> git clone https://github.com/PyMySQL/PyMySQL
>>> cd PyMySQL/
>>> python3 setup.py install

2、如果需要制定版本號,可以使用 curl 命令來安裝:

>>> # X.X 為 PyMySQL 的版本號
>>> curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz
>>> cd PyMySQL*
>>> python3 setup.py install
>>> # 現(xiàn)在你可以刪除 PyMySQL* 目錄

二、連接數(shù)據(jù)庫

連接數(shù)據(jù)庫會用到的參數(shù):

database – 數(shù)據(jù)庫名稱

user – 用戶名

password – 密碼

host – 服務(wù)器地址 (如果不提供默認(rèn)連接Unix Socket)

port – 連接端口 (默認(rèn)5432)

用pymysql模塊中的connect連接數(shù)據(jù)庫,同時用cursor()函數(shù)創(chuàng)建游標(biāo),用于接收返回的結(jié)果。

這里返回了一個游標(biāo)實(shí)例對象,說明你已經(jīng)連接成功了。

三、數(shù)據(jù)庫操作

接下來我們可以使用 .execute 對數(shù)據(jù)庫進(jìn)行一系列的增刪改查操作

運(yùn)行成功后就可以在電腦上的數(shù)據(jù)庫中查找到相應(yīng)的變化啦,最后記得關(guān)閉數(shù)據(jù)庫的連接,以下是查詢結(jié)果:

四、代碼奉上

我是通過讀取配置文件讀取數(shù)據(jù)庫信息進(jìn)行連接的,一并付上代碼,有需要的可以參考,不需要的直接忽略

#setting.ini配置文件
[mysql]
# MySQL配置
MYSQL_HOST = 39.101.000.0
MYSQL_PORT = 5432
MYSQL_USER = test
MYSQL_PASSWD = xxxx
MYSQL_DB = xxxx_dev

[postgresql]
# postgresql配置
PG_HOST = 39.101.000.0
PG_PORT = 5432
PG_USER = test
PG_PASSWD = xxxxx
PG_DB = xxxxxx_dev
# load_ini.py文件,讀取ini配置文件方法
def load_ini(file_path):
    log.info("加載 {} 文件......".format(file_path))
    config = MyConfigParser()
    config.read(file_path, encoding="UTF-8")
    data = dict(config._sections)
    return data
#run.py文件
#導(dǎo)入所需包
import os
import pymysql
import psycopg2
from common.load_ini import load_ini

#拼接路徑以列表的形式進(jìn)行讀取配置文件
BASE_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
data_file_path = os.path.join(BASE_PATH, "config", "setting.ini")
mysql_data = load_ini(data_file_path)['mysql']
pg_data = load_ini(data_file_path)['postgresql']
#對庫信息進(jìn)行賦值,此方法只作為演示,大佬可自行編寫最優(yōu)寫法
mysql_host = mysql_data["MYSQL_HOST"]
mysql_port = int(mysql_data["MYSQL_PORT"])
mysql_username = mysql_data["MYSQL_USER"]
mysql_password = mysql_data["MYSQL_PASSWD"]
mysql_database = mysql_data["MYSQL_DB"]
pg_host = pg_data["PG_HOST"]
pg_port = int(pg_data["PG_PORT"])
pg_username = pg_data["PG_USER"]
pg_password = pg_data["PG_PASSWD"]
pg_database = pg_data["PG_DB"]

#連接MySQL數(shù)據(jù)庫函數(shù)
def my_sql_database():
    #連庫相關(guān)信息
    mydb = pymysql.connect(
        host=mysql_host,
        port=mysql_port,
        user=mysql_username,
        passwd=mysql_password,
        db=mysql_database,
        charset='utf8'
    )
    mycursor = mydb.cursor()
    # 寫入SQL語句對數(shù)據(jù)庫進(jìn)行增刪改操作即可
    sql = "select * from jg_staff where staff_name = '測試1華北項(xiàng)目組'"
    # mycursor.execute("SHOW DATABASES")
    mycursor.execute(sql)
    print(mycursor.fetchall())
    mydb.commit()  # 查詢時不需需調(diào)用,此方法用于提交當(dāng)前事務(wù)。如果不調(diào)用這個方法,無論做了什么修改,自從上次調(diào)用#commit()是不可見的

    # 關(guān)閉數(shù)據(jù)庫
    mycursor.close()  # 關(guān)閉游標(biāo)
    mycursor.close()  # 關(guān)閉數(shù)據(jù)庫連接

#連接PostgreSQL數(shù)據(jù)庫函數(shù)
def pg_sql_database():
	#PostgreSQL數(shù)據(jù)庫連接方法和MySQL方法基本一致
    conn = psycopg2.connect(
            host=pg_host,
            port=pg_port,
            user=pg_username,
            password=pg_password,
            database=pg_database
    )
    cur = conn.cursor()
    sql = "select area from b_lands_attribute_2021 bla where id = '20545521'"
    cur.execute(sql)
    print(cur.fetchall()) #打印結(jié)果
    conn.commit()  # 查詢時不需需調(diào)用,此方法用于提交當(dāng)前事務(wù)。如果不調(diào)用這個方法,無論做了什么修改,自從上次調(diào)用#commit()是不可見的
    # 關(guān)閉數(shù)據(jù)庫
    cur.close()  # 關(guān)閉游標(biāo)
    cur.close()  # 關(guān)閉數(shù)據(jù)庫連接

def my_sql_insert(sql_case):
    """
    往sql插入數(shù)據(jù)
    :param sql_case:
    :return:
    """
    mydb = pymysql.connect(
        host=mysql_host,
        port=mysql_port,
        user=mysql_username,
        passwd=mysql_password,
        db=mysql_database,
        charset='utf8mb4'
    )
    mycursor = mydb.cursor()
    mycursor.execute(sql_case)
    mydb.commit()
    mydb.close()

def mysql_select(sql_case):
    """
    查詢sql以列表形式輸出
    :param sql_case:
    :return:
    """
    try:
        connection = pymysql.connect(
        host=mysql_host,
        port=mysql_port,
        user=mysql_username,
        passwd=mysql_password,
        db=mysql_database,
        charset='utf8mb4'
    )

        with connection.cursor() as cursor:
            cursor.execute(sql_case)

            results = []
            for row in cursor.fetchall():
                # 將包含Decimal的列轉(zhuǎn)換為浮點(diǎn)數(shù)
                processed_row = [float(item) if isinstance(item, Decimal) else item for item in row]
                results.append(processed_row)

    except MySQLError as e:
        print(f"Error: {e}")
        results = []

    finally:
        if connection:
            connection.close()

    return results


def my_sql_select(sql_select):
    """
    查詢sql以數(shù)據(jù)類型輸出
    :param sql_select:
    :return:
    """
    mydb = pymysql.connect(
        host=mysql_host,
        port=mysql_port,
        user=mysql_username,
        passwd=mysql_password,
        db=mysql_database,
        charset='utf8mb4'
    )
    mycursor = mydb.cursor()
    mycursor.execute(sql_select)
    nested_list = [list(row) for row in mycursor.fetchall()]
    mydb.close()
    return nested_list

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 詳解Python中的argparse模塊

    詳解Python中的argparse模塊

    這篇文章主要介紹了詳解Python中的argparse模塊,argparse可以讓你輕松地編寫用戶友好的命令行界面,定義你的程序需要的參數(shù),自動生成幫助和用法信息,需要的朋友可以參考下
    2023-07-07
  • Python requests模塊session代碼實(shí)例

    Python requests模塊session代碼實(shí)例

    這篇文章主要介紹了Python requests模塊session代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • python計(jì)算列表元素與乘積詳情

    python計(jì)算列表元素與乘積詳情

    這篇文章主要介紹了python計(jì)算列表元素與乘積,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • matplotlib源碼解析標(biāo)題實(shí)現(xiàn)(窗口標(biāo)題,標(biāo)題,子圖標(biāo)題不同之間的差異)

    matplotlib源碼解析標(biāo)題實(shí)現(xiàn)(窗口標(biāo)題,標(biāo)題,子圖標(biāo)題不同之間的差異)

    這篇文章主要介紹了matplotlib源碼解析標(biāo)題實(shí)現(xiàn)(窗口標(biāo)題,標(biāo)題,子圖標(biāo)題不同之間的差異),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python如何提取xml指定內(nèi)容

    python如何提取xml指定內(nèi)容

    這篇文章主要介紹了python如何提取xml指定內(nèi)容,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python調(diào)用易語言動態(tài)鏈接庫實(shí)現(xiàn)驗(yàn)證碼功能

    Python調(diào)用易語言動態(tài)鏈接庫實(shí)現(xiàn)驗(yàn)證碼功能

    今天成功把易語言調(diào)用驗(yàn)證碼通殺的DLL在Python中成功調(diào)用了,心理美滋滋的,接著把我的經(jīng)驗(yàn)及示例代碼分享給大家,希望對大家有所幫助
    2021-08-08
  • 一文搞懂 Python 的 abc.ABC基類

    一文搞懂 Python 的 abc.ABC基類

    Python里abc.ABC 是“抽象基類”的基類,本文就來介紹一下 Python 的 abc.ABC基類使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2026-02-02
  • 對pandas里的loc并列條件索引的實(shí)例講解

    對pandas里的loc并列條件索引的實(shí)例講解

    今天小編就為大家分享一篇對pandas里的loc并列條件索引的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python實(shí)現(xiàn)對excel進(jìn)行數(shù)據(jù)剔除操作實(shí)例

    python實(shí)現(xiàn)對excel進(jìn)行數(shù)據(jù)剔除操作實(shí)例

    python在數(shù)據(jù)分析這方便的介紹應(yīng)該不用多說了,下面這篇文章主要給大家介紹了關(guān)于利用python實(shí)現(xiàn)對excel進(jìn)行數(shù)據(jù)剔除操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-12-12
  • 跟老齊學(xué)Python之坑爹的字符編碼

    跟老齊學(xué)Python之坑爹的字符編碼

    本文主要介紹了在Python2.x中的編碼問題,非常的坑爹,不過如果用python3,坑爹的編碼問題就不煩惱了。
    2014-09-09

最新評論

西藏| 织金县| 新沂市| 大洼县| 东乌| 洪湖市| 搜索| 梁山县| 股票| 永和县| 武隆县| 洮南市| 巴东县| 岑溪市| 湘潭市| 南召县| 古蔺县| 阳东县| 望城县| 枝江市| 长岭县| 岳普湖县| 宣汉县| 资中县| 汝州市| 颍上县| 青冈县| 东至县| 太保市| 灌阳县| 内江市| 永修县| 白城市| 康定县| 温州市| 宁晋县| 银川市| 浦县| 葫芦岛市| 汾阳市| 莱芜市|