python psycopg2 操作数据库 类写法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在Python中,使用psycopg2库操作PostgreSQL数据库时,通常会封装一个类来管理连接、执行SQL语句和处理结果集。
下面是一个基础的PostgresDatabase类的实现,该类可以简化数据库连接创建、查询执行以及其他
常见数据库操作:
Python
import psycopg2
from psycopg2 import Error
class PostgresDatabase:
def __init__(self, host, database, user, password,
port=5432):
self.host = host
self.database = database
er = user
self.password = password
self.port = port
self.conn = None
self.cursor = None
# 在初始化方法中建立数据库连接
self.connect()
def connect(self):
try:
self.conn = psycopg2.connect(
host=self.host,
dbname=self.database,
user=er,
password=self.password,
port=self.port
)
self.cursor = self.conn.cursor()
print("Connected to the PostgreSQL database successfully.")
except (Exception, psycopg2.Error) as error:
print(f"Error while connecting to PostgreSQL: {error}")
def execute_query(self, query, params=None):
if not self.conn:
self.connect()
try:
if params:
self.cursor.execute(query, params)
else:
self.cursor.execute(query)
# 如果是SELECT等查询语句,返回结果
if self.cursor.description:
return self.cursor.fetchall()
# 提交事务(对于INSERT, UPDATE, DELETE等非查询操作) mit()
except (Exception, psycopg2.Error) as error:
print(f"Error executing the query: {error}")
if self.conn:
self.conn.rollback() # 发生错误时回滚事务
def close_connection(self):
if self.cursor:
self.cursor.close()
if self.conn:
self.conn.close()
print("PostgreSQL connection is closed.")
# 使用示例:
db = PostgresDatabase('localhost', 'mydatabase', 'myuser',
'mypassword')
sql_query = "SELECT * FROM mytable"
results = db.execute_query(sql_query)
for row in results:
print(row)
# 完成操作后关闭连接
db.close_connection()
上述类定义中:
∙__init__方法用于初始化类实例,并尝试建立到数据库的连接。
∙connect方法负责实际的连接逻辑,如果连接失败则打印错误信息。
∙execute_query方法接受SQL查询语句和可选的参数列表,执行查询并根
据需要提交事务或回滚事务。
如果是查询类型的操作,则返回查询结
果。
∙close_connection方法确保在完成所有数据库操作后关闭游标和连接。
通过这样的类封装,可以在应用中更方便地管理和复用数据库连接资源,同时提高代码的可读性和维护性。