欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python進(jìn)行PostgreSQL數(shù)據(jù)庫連接的詳細(xì)使用指南

 更新時間:2025年05月18日 09:02:18   作者:懶大王愛吃狼  
在Python中連接PostgreSQL數(shù)據(jù)庫,最常用的庫是psycopg2,本文為大家詳細(xì)介紹了Python使用psycopg2庫操作PostgreSQL的詳細(xì)步驟,需要的可以了解下

在Python中連接PostgreSQL數(shù)據(jù)庫,最常用的庫是psycopg2。以下是詳細(xì)的使用指南:

安裝psycopg2

首先需要安裝psycopg2庫:

pip install psycopg2
# 或者使用二進(jìn)制版本(安裝更快)
pip install psycopg2-binary

基本連接與操作

1. 建立數(shù)據(jù)庫連接

import psycopg2

# 建立連接
conn = psycopg2.connect(
    dbname="your_database",
    user="your_username",
    password="your_password",
    host="your_host",
    port="your_port"
)

# 創(chuàng)建游標(biāo)對象
cur = conn.cursor()

2. 執(zhí)行SQL查詢

# 執(zhí)行簡單查詢
cur.execute("SELECT * FROM your_table LIMIT 5;")

# 獲取結(jié)果
rows = cur.fetchall()
for row in rows:
    print(row)

3. 執(zhí)行參數(shù)化查詢(防止SQL注入)

# 使用參數(shù)化查詢
user_id = 5
cur.execute("SELECT * FROM users WHERE id = %s;", (user_id,))
user = cur.fetchone()
print(user)

4. 插入數(shù)據(jù)

# 插入單條數(shù)據(jù)
cur.execute(
    "INSERT INTO users (name, email) VALUES (%s, %s) RETURNING id;",
    ('John Doe', 'john@example.com')
)
user_id = cur.fetchone()[0]
conn.commit()  # 必須提交事務(wù)
print(f"插入的用戶ID: {user_id}")

???????# 批量插入
users_data = [
    ('Alice', 'alice@example.com'),
    ('Bob', 'bob@example.com'),
    ('Charlie', 'charlie@example.com')
]
cur.executemany(
    "INSERT INTO users (name, email) VALUES (%s, %s);",
    users_data
)
conn.commit()

5. 更新數(shù)據(jù)

cur.execute(
    "UPDATE users SET email = %s WHERE id = %s;",
    ('new_email@example.com', 1)
)
conn.commit()

6. 刪除數(shù)據(jù)

cur.execute(
    "DELETE FROM users WHERE id = %s;",
    (5,)
)
conn.commit()

使用上下文管理器(推薦)

# 使用with語句自動管理連接
with psycopg2.connect(
    dbname="your_database",
    user="your_username",
    password="your_password",
    host="your_host"
) as conn:
    with conn.cursor() as cur:
        cur.execute("SELECT * FROM users;")
        for row in cur:
            print(row)
    # 不需要顯式調(diào)用commit()或close(),with語句會自動處理

使用連接池(適用于Web應(yīng)用)

對于Web應(yīng)用等需要頻繁連接數(shù)據(jù)庫的場景,可以使用連接池:

from psycopg2 import pool

???????# 創(chuàng)建連接池
connection_pool = pool.SimpleConnectionPool(
    minconn=1,
    maxconn=10,
    dbname="your_database",
    user="your_username",
    password="your_password",
    host="your_host"
)

# 從連接池獲取連接
conn = connection_pool.getconn()
cur = conn.cursor()
cur.execute("SELECT * FROM users;")
# ... 執(zhí)行操作 ...

???????# 將連接返回給連接池
connection_pool.putconn(conn)

使用SQLAlchemy(ORM方式)

如果你更喜歡使用ORM,可以安裝SQLAlchemy:

pip install sqlalchemy psycopg2-binary

然后使用:

from sqlalchemy import create_engine, text

# 創(chuàng)建引擎
engine = create_engine('postgresql://user:password@localhost:5432/dbname')

# 執(zhí)行查詢
with engine.connect() as connection:
    result = connection.execute(text("SELECT * FROM users;"))
    for row in result:
        print(row)

注意事項

始終記得提交事務(wù)(conn.commit())或回滾(conn.rollback())

使用參數(shù)化查詢防止SQL注入

操作完成后關(guān)閉游標(biāo)和連接

對于生產(chǎn)環(huán)境,考慮使用連接池

將數(shù)據(jù)庫憑據(jù)存儲在環(huán)境變量或配置文件中,不要硬編碼在代碼里

以上就是Python進(jìn)行PostgreSQL數(shù)據(jù)庫連接的詳細(xì)使用指南的詳細(xì)內(nèi)容,更多關(guān)于Python PostgreSQL數(shù)據(jù)庫連接的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python Numpy教程之排序,搜索和計數(shù)詳解

    Python Numpy教程之排序,搜索和計數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了Python?NumPy中排序,搜索和計數(shù)的實現(xiàn),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-08-08
  • Numpy的np.random隨機(jī)模塊詳解

    Numpy的np.random隨機(jī)模塊詳解

    這篇文章主要介紹了Numpy的np.random隨機(jī)模塊詳解,平時都會使用到隨機(jī)模塊,一般是torch.random或者是numpy.random,有或者是直接使用ramdom這個python內(nèi)置的工具包,那么下面就簡單記錄一下numpy.random常用的函數(shù),需要的朋友可以參考下
    2023-08-08
  • python計算兩個地址之間的距離方法

    python計算兩個地址之間的距離方法

    今天小編就為大家分享一篇python計算兩個地址之間的距離方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 使用pyshp包進(jìn)行shapefile文件修改的例子

    使用pyshp包進(jìn)行shapefile文件修改的例子

    今天小編就為大家分享一篇使用pyshp包進(jìn)行shapefile文件修改的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python中的字符串操作和編碼Unicode詳解

    Python中的字符串操作和編碼Unicode詳解

    其實字符串也是一種數(shù)據(jù)類型,但是,字符串比較特殊的是還有一個編碼問題。下面這篇文章主要給大家介紹了Python中的字符串操作和編碼Unicode詳解的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • Python離線安裝openpyxl模塊的步驟

    Python離線安裝openpyxl模塊的步驟

    這篇文章主要介紹了Python離線安裝openpyxl模塊的步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • 利用python-pypcap抓取帶VLAN標(biāo)簽的數(shù)據(jù)包方法

    利用python-pypcap抓取帶VLAN標(biāo)簽的數(shù)據(jù)包方法

    今天小編就為大家分享一篇利用python-pypcap抓取帶VLAN標(biāo)簽的數(shù)據(jù)包方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 淺談python和C語言混編的幾種方式(推薦)

    淺談python和C語言混編的幾種方式(推薦)

    下面小編就為大家?guī)硪黄獪\談python和C語言混編的幾種方式(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Python 實現(xiàn)任意區(qū)域文字識別(OCR)操作

    Python 實現(xiàn)任意區(qū)域文字識別(OCR)操作

    這篇文章主要介紹了Python 實現(xiàn)任意區(qū)域文字識別(OCR)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析

    python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析

    這篇文章主要介紹了python?memory_profiler庫生成器和迭代器內(nèi)存占用的時間分析,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下
    2022-06-06

最新評論