如何在Python中连接PostgreSQL数据库?

在 Python 中连接 PostgreSQL 数据库,最常用的库是 psycopg2,它是一个流行的 PostgreSQL 数据库适配器。以下将详细介绍如何使用 psycopg2 来连接、操作和关闭 PostgreSQL 数据库。

1. 安装 psycopg2

在开始之前,你需要安装 psycopg2 库。可以使用 pip 进行安装:
pip install psycopg2

2. 连接到 PostgreSQL 数据库

连接数据库需要知道数据库的相关信息,如数据库名、用户名、密码、主机地址和端口号。以下是一个简单的连接示例:
import psycopg2

try:
    # 建立数据库连接
    connection = psycopg2.connect(
        database="your_database",
        user="your_user",
        password="your_password",
        host="your_host",
        port="your_port"
    )
    print("成功连接到数据库!")
except psycopg2.Error as e:
    print(f"连接数据库时出错: {e}")

在上述代码中,你需要将 your_databaseyour_useryour_passwordyour_host 和 your_port 替换为你实际的数据库信息。

3. 创建游标对象

连接成功后,需要创建一个游标对象,用于执行 SQL 语句并获取结果。示例如下:
 
# 创建游标对象
cursor = connection.cursor()

4. 执行 SQL 语句

4.1 查询数据

以下是一个查询表中数据的示例:
 
try:
    # 执行 SQL 查询语句
    cursor.execute("SELECT * FROM your_table")
    # 获取查询结果
    rows = cursor.fetchall()
    for row in rows:
        print(row)
except psycopg2.Error as e:
    print(f"执行查询时出错: {e}")

在上述代码中,your_table 需要替换为你实际要查询的表名。fetchall() 方法用于获取查询结果的所有行。

4.2 插入数据

以下是一个插入数据的示例:
try:
    # 执行插入语句
    cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", ('value1', 'value2'))
    # 提交事务
    connection.commit()
    print("数据插入成功!")
except psycopg2.Error as e:
    # 回滚事务
    connection.rollback()
    print(f"插入数据时出错: {e}")

在上述代码中,your_tablecolumn1column2 需要替换为实际的表名和列名,'value1' 和 'value2' 是要插入的值。注意,使用 %s 作为占位符可以防止 SQL 注入攻击。

4.3 更新数据

以下是一个更新数据的示例:
 
try:
    # 执行更新语句
    cursor.execute("UPDATE your_table SET column1 = %s WHERE condition = %s", ('new_value', 'condition_value'))
    # 提交事务
    connection.commit()
    print("数据更新成功!")
except psycopg2.Error as e:
    # 回滚事务
    connection.rollback()
    print(f"更新数据时出错: {e}")

在上述代码中,your_tablecolumn1 需要替换为实际的表名和列名,'new_value' 是要更新的值,condition 和 'condition_value' 是更新的条件。

4.4 删除数据

以下是一个删除数据的示例:
try:
    # 执行删除语句
    cursor.execute("DELETE FROM your_table WHERE condition = %s", ('condition_value',))
    # 提交事务
    connection.commit()
    print("数据删除成功!")
except psycopg2.Error as e:
    # 回滚事务
    connection.rollback()
    print(f"删除数据时出错: {e}")

在上述代码中,your_table 需要替换为实际的表名,condition 和 'condition_value' 是删除的条件。

5. 关闭游标和连接

操作完成后,需要关闭游标和数据库连接,以释放资源。示例如下:
# 关闭游标
cursor.close()
# 关闭数据库连接
connection.close()
print("数据库连接已关闭。")

完整示例代码

import psycopg2

try:
    # 建立数据库连接
    connection = psycopg2.connect(
        database="your_database",
        user="your_user",
        password="your_password",
        host="your_host",
        port="your_port"
    )
    print("成功连接到数据库!")

    # 创建游标对象
    cursor = connection.cursor()

    # 执行 SQL 查询语句
    cursor.execute("SELECT * FROM your_table")
    # 获取查询结果
    rows = cursor.fetchall()
    for row in rows:
        print(row)

    # 执行插入语句
    cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", ('value1', 'value2'))
    # 提交事务
    connection.commit()
    print("数据插入成功!")

    # 关闭游标
    cursor.close()
    # 关闭数据库连接
    connection.close()
    print("数据库连接已关闭。")

except psycopg2.Error as e:
    print(f"操作数据库时出错: {e}")

将上述代码中的占位符替换为实际的数据库信息和表结构信息,即可实现 Python 与 PostgreSQL 数据库的连接和操作。

posted on 2025-03-12 09:33  阿陶学长  阅读(1544)  评论(0)    收藏  举报