python数据库操作之PyMysql怎么运用
发布时间:2023-03-28 14:09:45 所属栏目:教程 来源:
导读:PyMysqL使用详解
在编写小脚本时,PyMysqL是快速连接并操作数据库的一个不错选择。
安装
pip3 install PyMysqL
# 可使用 pip list 查看此环境安装了哪些第三方库 pip list | grep PyMysqL
使用
import py
在编写小脚本时,PyMysqL是快速连接并操作数据库的一个不错选择。
安装
pip3 install PyMysqL
# 可使用 pip list 查看此环境安装了哪些第三方库 pip list | grep PyMysqL
使用
import py
PyMysqL使用详解 在编写小脚本时,PyMysqL是快速连接并操作数据库的一个不错选择。 安装 pip3 install PyMysqL # 可使用 pip list 查看此环境安装了哪些第三方库 pip list | grep PyMysqL 使用 import pyMysqL 连接数据库 使用connect函数创建连接对象,此连接对象提供关闭数据库、事务回滚等操作 一般传参为:host, user, password, port(默认为3306), database(想要连接的数据库名) db = pyMysqL.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') 连接对象的常见方法: 方法名 说明 cursor() 获取游标对象,操作数据库,如执行DML操作,调用存储过程等 commit() 提交事务 rollback() 回滚事务 close() 关闭数据库连接 操作数据库 操作数据库主要使用cursor游标对象,对数据库进行操作 cursor游标对象的常见方法 方法名 说明 close() 关闭当前游标对象 execute(query) 执行数据库操作,如sql语句或数据库命令 executemany(query,params) 用于批量操作,如:批量更新 fetchone() 获取查询结果集中的下一条记录 fetchmany(size) 获取查询结果集中指定数量的记录,size默认为1 fetchall() 获取查询结果集中所有记录 nextset() 跳至下一个可用的结果集 fetchone(),fetchmany(size),fetchall() 三者的返回值都是元组 或 元组的嵌套 查 查询主要获取结果集,注意fetchone 得到的是元组, fetchmany(size),fetchall()得到的是元组的嵌套 注意: 如果既要使用python的字符串解析%,sql语句中又包含sql的模糊查询占位符%, 模糊查询使用%%即可,这样不会报错 import pyMysqL # 创建数据库连接对象 db = pyMysqL.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') # 创建游标对象 cursor = db.cursor() table_name = 'map_point' sql = "SELECT * FROM %s WHERE username LIKE 'DL%%' " % table_name try: cursor.execute(sql) # 执行sql语句,也可执行数据库命令,如:show tables result = cursor.fetchall() # 所有结果 print(result) except Exception as e: db.rollback() print("查询失败") print(e) finally: cursor.close() # 关闭当前游标 db.close() # 关闭数据库连接 循环查询: 在一些场景中,需要进行循环查询,判断,此时在执行完execute查询语句后,务必进行commit提交,否则每次查询到的数据都是之前查询结果的快照,也就是旧数据。 或者采用第二种方案,创建connect连接时,增添autocommit=True属性,自动进行commit提交。 增,删,改 增删改需要有提交事务的操作,查不需要提交事务,但如果循环查询,务必提交事务,否则结果都是重复的 创建连接对象——db= pyMysqL() 创建cursor游标对象——cur = db.cursor() 数据操作——cur.execute(sql) 提交连接事务——db.commit() 关闭cursor游标对象——cur.close() 关闭连接对象——db.close( ) import pyMysqL # 创建数据库连接对象 db = pyMysqL.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') # 创建游标对象 cursor = db.cursor() table_name = 'table_name ' user_id = 'yyy' user_no = 'xxx' sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, user_no, user_id) try: cursor.execute(sql) # 执行sql语句,也可执行数据库命令,如:show tables db.commit() # 增删改,必须执行事务 print("数据更新成功") except Exception as e: db.rollback() # 若出现失败,进行回滚 print("数据更新失败") print(e) finally: cursor.close() # 关闭当前游标 db.close() # 关闭数据库连接 使用循环批量更新 db = pyMysqL.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') table_name = 'table_name' update_list = ['xxx2', 'xxxx3'] condition_list = ['xxx', 'xxx1'] # 条件集合,更新集合长度相等时可使用,可根据其他情况重新编写 cursor = db.cursor() for i in range(len(condition_list)): sql = "UPDATE %s SET user_no = '%s' WHERE user_id = '%s'" % (table_name, update_list[i], condition_list[i]) print('执行sql语句:' + sql) try: cursor.execute(sql) db.commit() print("数据更新成功" + str(i+1) + '条') except Exception as e: db.rollback() print("数据更新失败") print(e) cursor.close() db.close() 使用executemany(query, param) 批量更新 params为每条记录的维度,可为嵌套数组和元组 注意:sql语句中需要更改的数据不管什么类型,统一使用%s作为占位符,不需要加引号 # 创建数据库连接对象 db = pyMysqL.connect(host='127.0.0.1', user='root', password='pwd', database='database_name') # 创建游标对象 cursor = db.cursor() update_list = ['a', 'b'] condition_list = ['a1', 'b1'] # 条件数组和需要更新的数据数组是分开的,因为param需要以每条的维度,所以可以使用拉链函数合并 params = zip(update_list, condition_list) # 或 param = [['a', 'a1'], ['b', 'b1']] sql = "UPDATE map_point SET storageLocation_no = %s WHERE position_id = %s" # 注意 这里的 占位%s 都不用加引号 try: cursor.executemany(sql, params) # 执行sql语句 db.commit() # 执行事务 print("数据批量更新成功") except Exception as e: db.rollback() print("数据更新失败") print(e) finally: cursor.close() # 关闭当前游标 db.close() # 关闭数据库连接 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐