如何使用psycopg2定义可传递查询语句的函数?
如何修改psycopg2查询函数以传递查询语句
核心修改点
- 调整函数参数,将查询语句作为第一个参数传入,匹配你调用时的参数顺序
- 完善函数内部逻辑,完成从连接数据库到执行查询、返回结果的完整流程
- 使用
with语句管理连接和游标,自动释放资源,避免内存泄漏
修改后的完整代码
import psycopg2 def databasequery(query, database, user, password, host, port): # 用with语句自动管理连接和游标生命周期 with psycopg2.connect( database=database, user=user, password=password, host=host, port=port ) as conn: with conn.cursor() as curr: curr.execute(query) # 返回SELECT语句的查询结果 return curr.fetchall() # 调用函数,确保参数顺序与函数定义一致 query_results = databasequery( "SELECT * FROM customers", "your_database", "your_user", "your_password", "your_host", "your_port" ) print(query_results)
扩展说明
如果需要执行INSERT/UPDATE/DELETE这类非查询语句,可以修改函数逻辑,添加事务提交:
def databasequery(query, database, user, password, host, port): try: with psycopg2.connect( database=database, user=user, password=password, host=host, port=port ) as conn: with conn.cursor() as curr: curr.execute(query) # 判断语句类型,SELECT返回结果,其他提交事务 if query.strip().upper().startswith("SELECT"): return curr.fetchall() else: conn.commit() return "操作执行成功" except psycopg2.Error as e: print(f"数据库操作出错: {e}") return None
内容的提问来源于stack exchange,提问作者W Tasca
相关产品推荐
相关产品推荐

