封装Python连接PostgreSQL数据库,支持增、删、改、查
时间: 2023-10-19 14:05:39 浏览: 65
好的,我可以为您提供一个示例代码,用于封装Python连接PostgreSQL数据库,支持增、删、改、查操作。请先确保您已经安装了`psycopg2`库,它是Python连接PostgreSQL数据库的驱动程序。
首先,我们需要定义一个`PostgreSQL`类,用于连接数据库、执行SQL语句等操作。示例代码如下:
```python
import psycopg2
class PostgreSQL:
def __init__(self, dbname, user, password, host, port):
self.conn = psycopg2.connect(dbname=dbname, user=user, password=password, host=host, port=port)
self.cursor = self.conn.cursor()
def execute(self, sql):
self.cursor.execute(sql)
self.conn.commit()
return self.cursor.fetchall()
def close(self):
self.cursor.close()
self.conn.close()
```
在`__init__`方法中,我们使用`psycopg2`库连接数据库,并创建一个游标对象。`execute`方法用于执行SQL语句,并返回结果集。`close`方法用于关闭游标和连接。
接下来,我们可以在`PostgreSQL`类中添加增、删、改、查方法,示例代码如下:
```python
class PostgreSQL:
def __init__(self, dbname, user, password, host, port):
self.conn = psycopg2.connect(dbname=dbname, user=user, password=password, host=host, port=port)
self.cursor = self.conn.cursor()
def execute(self, sql):
self.cursor.execute(sql)
self.conn.commit()
return self.cursor.fetchall()
def close(self):
self.cursor.close()
self.conn.close()
def insert(self, table, columns, values):
sql = f"INSERT INTO {table} ({','.join(columns)}) VALUES ({','.join(['%s']*len(values))})"
self.cursor.execute(sql, values)
self.conn.commit()
def delete(self, table, condition):
sql = f"DELETE FROM {table} WHERE {condition}"
self.cursor.execute(sql)
self.conn.commit()
def update(self, table, columns, values, condition):
sql = f"UPDATE {table} SET {','.join([f'{column}=%s' for column in columns])} WHERE {condition}"
self.cursor.execute(sql, values)
self.conn.commit()
def select(self, table, columns=None, condition=None):
sql = f"SELECT {','.join(columns) if columns else '*'} FROM {table}"
if condition:
sql += f" WHERE {condition}"
self.cursor.execute(sql)
return self.cursor.fetchall()
```
`insert`方法用于插入数据,需要传入表名、列名和值。`delete`方法用于删除数据,需要传入表名和条件。`update`方法用于修改数据,需要传入表名、列名、值和条件。`select`方法用于查询数据,需要传入表名、列名和条件。
使用示例:
```python
pg = PostgreSQL(dbname='test', user='postgres', password='123456', host='localhost', port='5432')
# 插入数据
pg.insert('students', ['name', 'age', 'gender'], ['张三', 18, '男'])
# 查询数据
result = pg.select('students', ['name', 'age'], "gender='男'")
print(result) # [('张三', 18)]
# 修改数据
pg.update('students', ['age'], [20], "name='张三'")
# 删除数据
pg.delete('students', "name='张三'")
pg.close()
```
这样,我们就封装了一个可以连接PostgreSQL数据库、支持增、删、改、查操作的Python类。