当前位置: 首页 > news >正文

怎么使用python进行PostgreSQL 数据库连接?

使用Python连接PostgreSQL数据库

在Python中连接PostgreSQL数据库,最常用的库是psycopg2。以下是详细的使用指南:

安装psycopg2

首先需要安装psycopg2库:

pip install psycopg2
# 或者使用二进制版本(安装更快)
pip install psycopg2-binary

基本连接与操作

1. 建立数据库连接

import psycopg2# 建立连接
conn = psycopg2.connect(dbname="your_database",user="your_username",password="your_password",host="your_host",port="your_port"
)# 创建游标对象
cur = conn.cursor()

2. 执行SQL查询

# 执行简单查询
cur.execute("SELECT * FROM your_table LIMIT 5;")# 获取结果
rows = cur.fetchall()
for row in rows:print(row)

3. 执行参数化查询(防止SQL注入)

# 使用参数化查询
user_id = 5
cur.execute("SELECT * FROM users WHERE id = %s;", (user_id,))
user = cur.fetchone()
print(user)

4. 插入数据

# 插入单条数据
cur.execute("INSERT INTO users (name, email) VALUES (%s, %s) RETURNING id;",('John Doe', 'john@example.com')
)
user_id = cur.fetchone()[0]
conn.commit()  # 必须提交事务
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. 更新数据

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

6. 删除数据

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)# 不需要显式调用commit()或close(),with语句会自动处理

使用连接池(适用于Web应用)

对于Web应用等需要频繁连接数据库的场景,可以使用连接池:

from psycopg2 import pool# 创建连接池
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;")
# ... 执行操作 ...# 将连接返回给连接池
connection_pool.putconn(conn)

使用SQLAlchemy(ORM方式)

如果你更喜欢使用ORM,可以安装SQLAlchemy:

pip install sqlalchemy psycopg2-binary

然后使用:

from sqlalchemy import create_engine, text# 创建引擎
engine = create_engine('postgresql://user:password@localhost:5432/dbname')# 执行查询
with engine.connect() as connection:result = connection.execute(text("SELECT * FROM users;"))for row in result:print(row)

注意事项

  1. 始终记得提交事务(conn.commit())或回滚(conn.rollback()
  2. 使用参数化查询防止SQL注入
  3. 操作完成后关闭游标和连接
  4. 对于生产环境,考虑使用连接池
  5. 将数据库凭据存储在环境变量或配置文件中,不要硬编码在代码里

以上是Python连接和操作PostgreSQL数据库的基本方法。根据你的具体需求,可以选择最适合的方式。

相关文章:

  • Web性能优化的未来:边缘计算、AI与新型渲染架构
  • WebMvcConfigurer介绍-笔记
  • 算法刷题(Java与Python)1.二分查找
  • 车道线检测----CLRERNet
  • 【云实验】基于对象存储OSS实现企业门户网站托管
  • RNope:结合 RoPE 和 NoPE 的长文本建模架构
  • 如何解决Move to iOS 不起作用的问题?
  • 车道线检测----CLRNet
  • C语言图案代码大全:从基础到高级
  • Recycling Krylov Subspace 方法解释与开源实现
  • ECMAScript标准:JavaScript的核心
  • 数据治理域——数据同步设计
  • python基础语法(三-中)
  • Jenkins 执行器(Executor)如何调整限制?
  • [250516] OpenAI 升级 ChatGPT:GPT-4.1 及 Mini 版上线!
  • 服务器死机了需要检查哪些问题
  • HarmonyOs开发之——— ArkWeb 实战指南
  • python训练 60天挑战-day27
  • Python中in和is关键字详解和使用
  • 智脑进化:神经网络如何从单层感知机迈向深度学习新纪元
  • 以军证实空袭也门多个港口
  • 中央提级巡视后,昆明厅官郭子贞接受审查调查
  • 国家统计局:2024年城镇单位就业人员工资平稳增长
  • 中国首艘海洋级智能科考船“同济”号试航成功,可搭载水下遥控机器人
  • 中国物流集团等10家央企11名领导人员职务任免
  • 病重老人取钱在银行门口去世,家属:已协商一致