python 代码执行sql的update的SQL语句,用try except判断执行是否异常
时间: 2024-05-12 13:18:27 浏览: 10
您可以尝试以下代码:
```python
import mysql.connector
try:
#连接数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="mydatabase"
)
#获取游标
mycursor = mydb.cursor()
#执行SQL语句
sql = "UPDATE customers SET address = 'New Address' WHERE address = 'Old Address'"
mycursor.execute(sql)
#提交更改
mydb.commit()
#关闭连接
mycursor.close()
mydb.close()
except mysql.connector.Error as error:
#出现异常时打印错误信息
print("Error: {}".format(error))
```
这是一个使用 try except 的基本示例,当执行过程中出现异常时,程序将输出异常信息,否则将提交更改并关闭数据库连接。这里我们使用 MySQL 进行演示,您需要根据自己的情况修改数据库连接信息和 SQL 语句。
相关问题
python 代码执行sql的update的SQL语句,用try except判断执行是否异常,如果异常,数据库执行回滚
可以使用以下代码来执行 SQL 的 update 语句,并且在异常情况下进行回滚操作:
```python
import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
try:
cursor.execute("UPDATE table_name SET col1 = val1, col2 = val2 WHERE condition")
# 提交事务
conn.commit()
except Exception as e:
# 打印异常信息
print('Error:', e)
# 回滚事务
conn.rollback()
finally:
# 关闭数据库连接
conn.close()
```
以上代码中,我们首先创建了一个连接到数据库的连接对象 `conn`,然后通过 `conn.cursor()` 方法来创建一个游标对象 `cursor`,用于执行 SQL 语句。
在执行 SQL 语句时,我们使用了 `try-except` 的语法结构,以捕获在执行 SQL 语句时可能出现的异常。如果执行 SQL 语句成功,则通过 `conn.commit()` 方法提交事务,使得修改的数据被永久保存在数据库中。而如果执行 SQL 语句失败,则会跳转到 `except` 块中执行回滚操作,以回退到上一个事务的状态。
最后,我们通过调用 `conn.close()` 方法来关闭数据库连接对象。
用python写个sql语句的执行通用类示例
### 回答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`方法来关闭数据库连接,以避免资源泄漏。