用python写个sql语句的执行通用类示例
时间: 2023-08-31 07:24:29 浏览: 159
### 回答1:
这是一个使用 Python 执行 SQL 语句的通用类的示例:
```
import mysql.connector
class SQL:
def __init__(self, host, user, password, database):
self.host = host
self.user = user
self.password = password
self.database = database
self.connection = mysql.connector.connect(
host=self.host,
user=self.user,
password=self.password,
database=self.database
)
self.cursor = self.connection.cursor()
def execute(self, sql, values=None):
self.cursor.execute(sql, values)
self.connection.commit()
def fetchone(self):
return self.cursor.fetchone()
def fetchall(self):
return self.cursor.fetchall()
def close(self):
self.cursor.close()
self.connection.close()
```
使用方法如下:
```
# 初始化
sql = SQL(host='localhost', user='root', password='123456', database='test')
# 执行查询语句
sql.execute('SELECT * FROM users WHERE age > %s', (20,))
# 获取结果
result = sql.fetchone()
# 处理结果
print(result)
# 关闭连接
sql.close()
```
上面的代码实现了以下功能:
- 通过给定的主机名、用户名、密码和数据库名初始化 MySQL 连接。
- 使用 execute() 方法执行 SQL 语句。
- 使用 fetchone() 方法获取单条结果。
- 使用 fetchall() 方法获取所有结果。
- 使用 close() 方法关闭 MySQL 连接。
注意:
- 在使用 execute() 方法时,可以使用 %s 作为占位符,并在 values 参数中传入参数列表。
- 在最后一定要记得关闭 MySQL 连接,否则可能会造成资源浪费。
### 回答2:
下面是一个使用Python编写的通用的执行SQL语句的示例类:
```python
import pymysql
class SQLExecutor:
def __init__(self, host, user, password, database):
self.host = host
self.user = user
self.password = password
self.database = database
def execute(self, sql, params=None):
conn = pymysql.connect(host=self.host, user=self.user, password=self.password, database=self.database)
cursor = conn.cursor()
try:
if params:
cursor.execute(sql, params)
else:
cursor.execute(sql)
conn.commit()
result = cursor.fetchall()
return result
except Exception as e:
conn.rollback()
print(f"执行SQL语句出错: {e}")
finally:
cursor.close()
conn.close()
```
这个`SQLExecutor`类通过`pymysql`库与数据库建立连接,然后可以使用`execute`方法来执行传入的SQL语句。如果SQL语句中有需要传递的参数,可以将参数作为`params`参数传递给`execute`方法。在执行完SQL语句后,会通过`fetchall`方法获取查询结果,并在事务提交之前关闭游标和连接。如果执行过程中出现异常,会进行事务回滚。
使用示例:
```python
executor = SQLExecutor('localhost', 'username', 'password', 'database_name')
sql = "SELECT * FROM users WHERE age > %s"
params = (18,)
result = executor.execute(sql, params)
print(result)
```
以上代码演示了如何查询年龄大于18的用户数据,并打印查询结果。使用`execute`方法传入SQL语句和参数,在`result`变量中获取查询结果。
### 回答3:
下面是一个Python编写的SQL语句执行通用类的示例:
```python
import pymysql
class SqlExecutor:
def __init__(self, host, user, password, database):
self.conn = pymysql.connect(host=host, user=user, password=password, database=database)
self.cursor = self.conn.cursor()
def execute_query(self, query):
self.cursor.execute(query)
result = self.cursor.fetchall()
return result
def execute_update(self, query):
self.cursor.execute(query)
self.conn.commit()
return self.cursor.rowcount
def close_connection(self):
self.cursor.close()
self.conn.close()
# 实例化SqlExecutor类
executor = SqlExecutor('localhost', 'root', 'password', 'testdb')
# 执行查询语句
query = "SELECT * FROM customers"
result = executor.execute_query(query)
print(result)
# 执行更新语句
query = "UPDATE customers SET address = 'New Address' WHERE id = 1"
affected_rows = executor.execute_update(query)
print(f"受影响的行数:{affected_rows}")
# 关闭数据库连接
executor.close_connection()
```
在示例代码中,我们使用pymysql模块连接MySQL数据库,并定义了一个名为SqlExecutor的类。这个类包含了执行查询和更新的方法。
- `execute_query`方法用于执行查询语句并返回结果集。
- `execute_update`方法用于执行更新语句并返回受影响的行数。
- `close_connection`方法用于关闭数据库连接。
我们可以根据实际需求调用这些方法执行SQL语句。需要注意的是,在使用完SqlExecutor类后,一定要调用`close_connection`方法来关闭数据库连接,以避免资源泄漏。
阅读全文