Python更新mysql的update语句

本文介绍如何使用Python更新MySQL数据库中的记录。通过pymysql模块创建数据库连接并执行更新操作。文章提供了一个具体的示例,展示了如何设置SQL更新语句及执行过程。
部署运行你感兴趣的模型镜像

最近用python更新mysql的需求,就整理了一下python更新mysql的操作

# 实例
sql="update goods set %s='%s' where goods_id='%d'" % (key,value,id)

# 创建数据库连接
mysql = pymysql.connect(host='xxx.xxx.xx.xx', user='ssss',
                        password='sssssssss', port=3306,
                        db='sssssss', charset='utf8mb4')
# 通过 cursor() 创建游标对象
# 注意:下面sql拼接中,i代表需要更新的一条dict格式的数据
cursor = mysql.cursor()
sql = "UPDATE tg_user_copy1 SET %s= '%s' WHERE id = %d" % ('encrypt_phone', i['encrypt_phone'], i['id'])
        print(sql)
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 提交到数据库执行
            mysql.commit()
        except Exception as e:
            print(e)
            # 发生错误时回滚
            mysql.rollback()

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

Python3.8

Python3.8

Conda
Python

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

<think>好的,用户想用Python执行MySQL查询并处理结果。我先回忆一下相关知识,记得常用的库是pymysql,对吧?需要先连接数据库,然后创建游标,执行SQL语句,再获取结果。用户提供的引用里也提到了pymysql的使用,比如引用[1]和[3]都有示例代码,可能可以直接参考。 首先,连接数据库的步骤。需要提供主机、端口、用户名、密码和数据库名。比如使用pymysql.connect方法,参数包括host、port、user、password、db。注意端口号是整数,默认应该是3306。用户示例中的代码也是这样写的,比如引用[3]里的db=pymysql.connect(...)。 接下来是创建游标对象,使用cursor()方法,这部分应该没问题。然后执行SQL语句,用execute()方法。如果是查询,执行后需要用fetchall()、fetchone()或fetchmany()来获取结果。引用[3]中的例子用了cur.execute(i)然后results=cur.fetchall(),不过他们的SQL是从文件读取的,可能需要处理多个语句? 需要注意的是,如果执行的是SELECT语句,才会返回结果集。而INSERT、UPDATE这些可能需要提交事务,用commit()。用户的问题主要是查询,所以应该关注fetch方法。 处理返回的结果通常是一个元组列表,每个元组代表一行数据。可能需要遍历这些结果,或者转换为更易读的格式,比如字典。引用[2]提到结果集的处理,可能可以结合使用游标的description属性来获取列名,然后组合成字典,这样用户处理数据会更方便。 还有,异常处理也很重要,比如连接失败或SQL错误,应该用try-except块来捕捉异常,确保关闭连接。用户提供的引用[3]中没有异常处理,可能需要补充这一点,提高代码的健壮性。 关于参数化查询,为了防止SQL注入,应该使用占位符,而不是拼接字符串。比如用%s作为占位符,然后在execute方法中传递参数元组。这在用户提供的引用中没有明显提到,但应该作为最佳实践加入。 最后,记得关闭游标和数据库连接,释放资源。使用close()方法,或者在with语句中自动管理。 现在根据这些步骤整理一个示例代码,包含连接、执行查询、处理结果、异常处理和资源释放。同时解释每个步骤的作用,并提醒用户注意安全和性能问题。</think>### 如何用Python执行MySQL查询并处理结果 以下是使用Python执行MySQL查询并处理结果的完整步骤及代码示例: --- #### **1. 安装依赖库** 使用`pymysql`库连接MySQL数据库: ```bash pip install pymysql ``` --- #### **2. 连接数据库** 通过`pymysql.connect()`建立连接,需提供主机地址、端口、用户名、密码和数据库名: ```python import pymysql # 连接数据库 db = pymysql.connect( host="localhost", port=3306, user="root", password="your_password", db="your_database", charset="utf8mb4" ) ``` --- #### **3. 执行查询语句** 使用游标对象执行SQL语句并获取结果: ```python try: # 创建游标 with db.cursor() as cursor: # 示例查询语句 sql = "SELECT id, name, email FROM users WHERE age > %s" # 执行参数化查询(防止SQL注入) cursor.execute(sql, (18,)) # 获取结果(三种方式) # results = cursor.fetchall() # 全部数据 # results = cursor.fetchone() # 单条数据 results = cursor.fetchmany(10) # 指定数量 # 将结果转为字典格式(可选) columns = [col[0] for col in cursor.description] dict_results = [dict(zip(columns, row)) for row in results] # 处理数据 for record in dict_results: print(f"ID: {record['id']}, 姓名: {record['name']}, 邮箱: {record['email']}") except pymysql.Error as e: print(f"数据库操作失败: {e}") finally: db.close() # 关闭连接 ``` --- #### **4. 关键注意事项** 1. **参数化查询** 使用`%s`占位符避免SQL注入,如: ```python cursor.execute("SELECT * FROM table WHERE column = %s", (value,)) ``` 2. **事务管理** 对于写操作(INSERT/UPDATE/DELETE),需手动提交: ```python db.commit() ``` 3. **结果集类型** - `fetchall()`: 返回所有行的列表 - `fetchone()`: 返回下一行数据 - `fetchmany(size)`: 返回指定数量的行 4. **连接池优化(高并发场景)** 可使用`DBUtils`库实现连接复用[^1]。 --- #### **5. 完整示例代码** ```python import pymysql def query_mysql(): try: # 连接数据库 db = pymysql.connect( host="localhost", user="root", password="pass123", db="test_db" ) # 使用字典游标(结果自动转为字典) with db.cursor(pymysql.cursors.DictCursor) as cursor: cursor.execute("SELECT * FROM products WHERE price > %s", (100,)) results = cursor.fetchall() for product in results: print(f"商品: {product['name']}, 价格: {product['price']}") except Exception as e: print(f"错误: {e}") finally: if db: db.close() if __name__ == "__main__": query_mysql() ``` ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值