Python中执行sql语句传入一个或多个变量

本文详细介绍了如何使用PyMySQL库连接数据库,执行SQL语句,包括插入和更新操作。通过实例展示了当SQL语句中包含单个变量和多个变量时的不同处理方法。
部署运行你感兴趣的模型镜像

导入pymysql类库,声明数据库对象

import pymysql
db = pymysql.connect(host='127.0.0.1',
                             port=3306,
                             user='root',
                             passwd='root',
                             db='world',
                             charset='utf8')
cursor = db.cursor()

方法1:SQL语句中有一个变量时,写法参考以下方法

# 使用 %s 占位符表示当前位置被变量替代,SQL语句后面使用 %(变量名) 表示需要插入的变量
sql = "insert into goods_detail(Url) values ('%s')" %(Url)

cursor.execute(sql)
db.commit()
db.close()

方法2:SQL语句中有多个变量时,方法1不可用,需要使用方法2

# SQL语句中只用 %s 写需要替代的变量,将需要替代的变量名放在 cursor.execute 中执行
sql = "UPDATE goods_detail SET productPrice = %s,productName = %s,stock = %s where  url = %s"

cursor.execute(sql,(GoodsDetailPrice,NewGoodsName,Stock, NewGoodsUrl))
db.commit()
db.close()

语句执行完毕,最后都需要提交并关闭数据库

db.commit()
db.close()

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 回答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`方法来关闭数据库连接,以避免资源泄漏。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西门一刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值